Для организации провайдером услуги СМС-авторизации на основе хотспотов, подключенных через Интернет, ООО "Нетамс" рекомендует придерживаться описанной ниже схемы.
Данный сценарий подходит, если:
- вы обслуживаете значительное число небольших площадок (мест оказания услуги), подключенных через Интернет
- подключения площадок осуществляется через сеть стороннего провайдера Интернет
- вы используете в качестве хотспотов устройства, установленные непосредственно на площадках клиента - маршрутизаторы Mikrotik со встроенной точкой доступа, либо точки доступа, перепрошитые на OpenWrt или dd-wrt
Сценарий не подходит вам, если вы используете:
- профессиональное Wi-Fi оборудование, управляемое контроллером (выполняющим роль хотспота)
- вы обеспечиваете прозрачный (Layer-2) транспорт сетей с площадок клиентов, в центральный узел вашей сети, где установлен большой хотспот (маршрутизатор Mikrotik, Cisco ASR, Alcatel и т.п.)
- у вас одна площадка оказания услуги (корпоративная сеть)
Рекомендуемая схема предполагает:
- Установку маршрутизатора-хотспота на каждой площадке оказания услуги. Внешний (WAN) интерфейс хотспота подключается к местному провайдеру Интернет, внутренний (LAN) интерфейс либо не используется, либо к нему подключена локальная сеть с точками доступа
- Хотспот либо содержит в себе встроенную точку доступа, либо не содержит радио-модуля. В последнем случае Wi-Fi доступ обеспечивается подключенными к LAN-порту любыми точками доступа Wi-Fi, работающими в режиме "access point".
- Для управления радио-ресурсами (каналы, SSID и т.п.) в случае применения внешних точек доступа рекомендуется использовать Uniquity UniFi. При этом контроллер точек доступа UniFi может располагаться на сервере WNAM. На контроллере должен быть отключен "гостевой доступ"
- Для обеспечения надежности и безопасности обмена информацией между хотспотами и центральным узлом вашей сети требуется настроить VPN-туннели. В противном случае вам придется открыть доступ к порталу авторизации абонентов, и к RADIUS-серверу, для всего Интернета
- Трафик авторизации абонентов (страницы приветствия, реклама), трафик RADIUS и NetFlow будут идти до сервера WNAM в туннеле, а остальной абонентский трафик (доступ в интернет) - напрямую через локального провайдера Интернет
- В качестве VPN-сервера используется OpenVPN с парольной авторизацией
Конфигурация интерфейсов на сервере
eth0: 1.2.3.4
tun0: 10.1.0.255
Конфигурация OpenVPN сервиса на сервере
Установите пакет openvpn:
apt-get install openvpn easy-rsa
Создайте сертификаты согласно инструкции отсюда: https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-debian-8#step-5-—-configure-and-build-the-certificate-authority
Отредактируйте файл /etc/openvpn/server.conf
mode server
dev tun
proto tcp-server
tls-server
port 1194
topology subnet
ca keys/ca.crt
cert keys/wnam.provider.ru.crt
key keys/wnam.provider.ru.key
dh keys/dh2048.pem
cipher AES-128-CBC
auth md5
keepalive 10 120
status /var/log/openvpn-status.log
log /var/log/openvpn.log
user nobody
group nogroup
persist-key
persist-tun
ifconfig 10.1.0.255 10.1.0.254
ifconfig-pool 10.1.0.1 10.1.0.253
route 10.1.0.0 255.255.0.0
push "route 10.1.0.255"
ifconfig-pool-persist ipp.txt 0
auth-user-pass-verify /etc/openvpn/verify.sh via-file
script-security 2
client-cert-not-required
username-as-common-name
verb 2
Создайте скрипт, выполняющий проверку логина-пароля /etc/openvpn/verify.sh
#!/bin/sh
## format: username:passwordusername:password ...
## you can even have same usernames with different passwords
# USERS='user1:pass1user2:pass2user3:pass3'
## you could put username:password in
## a separate file and read it like this
USERS=`cat /etc/openvpn/user.pass`
vpn_verify() {
if [ ! $1 ] || [ ! $2 ]; then
#echo "No username or password: $*"
exit 1
fi
## it can also be done with grep or sed
for i in $USERS; do
if [ "$i" = "$1:$2" ]; then
## you can add here logging of users
## if you have enough space for log file
#echo `date` $1:$2 >> your_log_file
exit 0
fi
done
}
if [ ! $1 ] || [ ! -e $1 ]; then
#echo "No file"
exit 1
fi
## $1 is file name which contains
## passed username and password
vpn_verify `cat $1`
#echo "No user with this password found"
exit 1
Затем выполните:
chmod +x /etc/openvpn/verify.sh
Создайте файл с IP-адресами клиентов /etc/openvpn/user.pass
vpn1,10.1.0.1
vpn2,10.1.0.2
vpn3,10.1.0.3
Создайте файл с логинами-паролями VPN клиентов /etc/openvpn/ipp.txt
vpn1:ate45cf7y345c5y2x3
vpn2:r2d346c34t4356yucf
vpn3:23cxterthure5y2yw3
Перезапустите сервис openvpn, проконтролируйте успешность запуска в файле /var/log/openvpn.log:
Конфигурация интерфейсов на хотспоте
Конфигурация OpenVPN клиента на хотспоте
Конфигурация хотспота