Для организации провайдером услуги СМС-авторизации на основе хотспотов, подключенных через сеть Интернет, мы рекомендуем придерживаться описанной ниже схемы.
Данный сценарий вам подходит, если:
- необходимо обслуживать значительное число небольших площадок (мест оказания услуги), подключенных через сеть Интернет;
- подключения площадок осуществляется через сеть Интернет стороннего провайдера;
- используется в качестве хотспотов устройства, установленные непосредственно на площадках клиента - маршрутизаторы Mikrotik со встроенной точкой доступа либо точки доступа, перепрошитые на OpenWrt.
Сценарий не подходит, если:
- используется профессиональное 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 с парольной авторизацией.
- внешний (публичный) адрес сервера - 1.2.3.4;
- имя сервера wnam.provider.ru, резолвится (разрешено) в 1.2.3.4 (для поддержки выписывания сертификатов Let's Encrypt);
- имя сервера vpn.provider.ru, резолвится (разрешено) в 1.2.3.4 (для поддержки клиентских VPN подключений);
- адрес туннельного интерфейса сервера - 10.1.0.255/24, также будет задействован служебный адрес 10.1.0.254;
- адреса туннельных интерфейсов клиентских хотспотов - 10.1.0.1 - 10.1.0.253/24;
- адреса LAN-интерфейсов клиентских хотспотов - 10.1.1.1/24 - 10.1.253.1/24, соответственно. Таким образом, можно подключить 253 площадки оказания услуги с внутренним адресом 10.1.N.1/24, диапазоном адресов для клиентов 10.1.N.2-10.1.N.254 и туннельным адресом 10.1.0.N.
Конфигурация интерфейсов на сервере
Необходимо установить сетевые интерфейсы:
- eth0: 1.2.3.4
- tun0: 10.1.0.255
Конфигурация OpenVPN сервиса на сервере
Необходимо установить пакет openvpn:
apt-get install openvpn easy-rsa
Затем необходимо создать сертификаты согласно инструкции:
Для удобства работы скопируйте дистрибутив easy-rsa в папку etc
cp -r /usr/share/easy-rsa /etc
Далее перейдите в скопированную папку:
cd /etc/easy-rsa
Теперь создайте центр сертификации (CA):
./easyrsa init-pki
touch pki/.rnd
./easyrsa build-ca
На запрос нужно ввести пароль, который далее будет использоваться для генерации сертификатов.
Далее на запрос введите наименование центра сертификации, например WNAM.
После этого сгенерируйте файл параметров Диффи-Хеллмана dh.pem
./easyrsa gen-dh
Затем создайте сертификат и ключ для сервера:
./easyrsa gen-req ovpn-server nopass
./easyrsa sign-req server ovpn-server
Выпущенные сертификаты будут располагаться в pki/issued.
Теперь скопируйте сертификат и ключ в конфигурационную папку openvpn:
mkdir /etc/openvpn/keys
cp pki/ca.crt pki/dh.pem /etc/openvpn/keys
cp pki/private/ovpn-server.key pki/issued/ovpn-server.crt /etc/openvpn/keys
Далее следует отредактировать файл /etc/openvpn/server.conf:
mode serverdev tunproto tcp-server
tls-server
port 1194
topology subnetca keys/ca.crt
cert keys/ovpn-server.crt
key keys/ovpn-server.key
dh keys/dh.pemcipher AES-128-CBC
auth md5keepalive 10 120
status /var/log/openvpn-status.log
log /var/log/openvpn.log
user nobody
group nogrouppersist-key
persist-tunifconfig 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 0auth-user-pass-verify /etc/openvpn/verify.sh via-file
script-security 2
verify-client-cert none
username-as-common-nameverb 2
Далее следует создать скрипт, выполняющий проверку логина и пароля /etc/openvpn/verify.sh:
#!/bin/sh
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.
systemctl daemon-reload
systemctl restart openvpn
Конфигурация интерфейсов на хотспоте
Настройка маршрутизатора Mikrotik будеn демонстрироватьcz на примере первого клиента, имеющего vpn-имя "vpn1".
В качестве WAN интерфейса используется ether1-gateway с настройками от локального провайдера сети Интернет:
/ip address
add address=272.16.130.9/24 interface=ether1-gateway network=272.16.130.0/ip route add distance=1 gateway=272.16.130.1
В качестве LAN/WLAN интерфейса используется bridge со следующими настройками:
/ip address
add address=10.1.1.1/24 interface=bridge-guest network=10.1.1.0
Интерфейс для OpenVpn подключения к серверу системы WNAM:
/interface ovpn-client
add auth=md5 cipher=aes128 connect-to=vpn.provider.ru name=wnam password=ate45cf7y345c5y2x3 user=vpn1
Настройка DHCP и DNS будет следующая:
/ip dhcp-server
add address-pool=dhcp-1 disabled=no interface=bridge lease-time=1h name=server/ip dhcp-server network
add address=10.1.1.0/24 dns-server=8.8.4.4 gateway=10.1.1.1/ip pool
add name=dhcp-102 ranges=10.1.1.2-10.1.1.254/ip dns
set allow-remote-requests=yes servers=8.8.4.4/ip dns static
add address=10.1.0.255 name=wnam.provider.ru
Затем следует настроить трансляцию адресов (NAT):
/ip firewall nat
add action=masquerade chain=srcnat comment="defconf: masquerade" out-interface=ether1-gateway
add action=masquerade chain=srcnat out-interface=wnam src-address=10.1.1.0/24
Необходимо со стороны хотспота проверить доступность портала авторизации:
/ping wnam.provider.ru src-address=10.1.1.1/system telnet wnam.provider.ru port=80
Затем следует настроить RADIUS клиента и NetFlow клиента:
/radius
add address=wnam.provider.ru domain=wnam secret=wnam_radius service=hotspot/ip traffic-flow
set interfaces=ether1-gateway
/ip traffic-flow target
add dst-address=wnam.provider.ru port=20002 version=5
Необходимо настроить конфигурацию хотспота:
/ip hotspot
add disabled=no idle-timeout=none interface=bridge name=mk-wnam profile=mk-profile-wnam/ip hotspot profile
add dns-name=mk.provider.ru hotspot-address=10.1.1.1 html-directory=hotspot login-by=http-pap name=mk-profile-wnam radius-default-domain=wnam radius-interim-update=5m use-radius=yes/ip hotspot user profile
set [ find default=yes ] add-mac-cookie=no name=default1 shared-users=unlimited status-autorefresh=1h/ip hotspot walled-garden
add dst-host=*.gosuslugi.ru dst-port=443
add dst-host=ocsp.int-x3.letsencrypt.org dst-port=80
add dst-host=cert.int-x3.letsencrypt.org dst-port=80
add dst-host=*.provider.ru dst-port=443
add dst-host=provider.ru dst-port=443
add dst-host=*.provider.ru dst-port=80
add dst-host=provider.ru dst-port=80
add dst-host=10.1.0.255 dst-port=80
После проведенных настроек файл hotspot/rlogin.html должен содержать строки вида:
<html><head><title>...</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="-1">
</head>
<body>
<form name="wnamlogin" action="http://wnam.provider.ru/cp/mikrotik" method="post">
<input type="hidden" name="dst" value="$(link-orig)" />
<input type="hidden" name="username" value = "user"/>
<input type="hidden" name="password" value = "password" />
<input type="hidden" name="mac" value = "$(mac)" />
<input type="hidden" name="ip" value = "$(ip)" />
<input type="hidden" name="server-name" value = "$(server-name)" />
<input type="hidden" name="server-address" value = "$(server-address)" />
<input type="hidden" name="client-id" value="$(client-id)"/>
<input type="hidden" name="site-id" value="$(site-id)"/>
</form>
<script type="text/javascript">
<!--
document.wnamlogin.submit();
//-->
</script>
</body>
</html>
Конфигурация системы WNAM
Для конфигурации системы следует настроить сервер доступа:
- установить тип сервера - Mikrotik;
- установить адрес (туннельный адрес хотспота) - 10.1.0.1;
- установить чекбоксы: "Использовать счетчики аккаутинга", "Определять имена абонентов", "Принимать детализацию потоков NetFlow.
А также следует произвести настройку площадки. Для этого установить IP-адрес подсети 10.1.1.0/24 (диапазон IP-адресов клиентов).