You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

Для организации провайдером услуги СМС-авторизации на основе хотспотов, подключенных через Интернет, ООО "Нетамс" рекомендует придерживаться описанной ниже схемы.

Данный сценарий подходит, если:

  • вы обслуживаете значительное число небольших площадок (мест оказания услуги), подключенных через Интернет
  • подключения площадок осуществляется через сеть стороннего провайдера Интернет
  • вы используете в качестве хотспотов устройства, установленные непосредственно на площадках клиента - маршрутизаторы Mikrotik со встроенной точкой доступа, либо точки доступа, перепрошитые на OpenWrt или dd-wrt

Сценарий не подходит вам, если вы используете:

  • профессиональное Wi-Fi оборудование, управляемое контроллером (выполняющим роль хотспота)
  • вы обеспечиваете прозрачный (Layer-2) транспорт сетей с площадок клиентов, в центральный узел вашей сети, где установлен большой хотспот (маршрутизатор Mikrotik, Cisco ASR, Alcatel и т.п.)
  • у вас одна площадка оказания услуги (корпоративная сеть)

Рекомендуемая схема предполагает:

  1. Установку маршрутизатора-хотспота на каждой площадке оказания услуги. Внешний (WAN) интерфейс хотспота подключается к местному провайдеру Интернет, внутренний (LAN) интерфейс либо не используется, либо к нему подключена локальная сеть с точками доступа
  2. Хотспот либо содержит в себе встроенную точку доступа, либо не содержит радио-модуля. В последнем случае Wi-Fi доступ обеспечивается подключенными к LAN-порту любыми точками доступа Wi-Fi, работающими в режиме "access point".
  3. Для управления радио-ресурсами (каналы, SSID и т.п.) в случае применения внешних точек доступа рекомендуется использовать Uniquity UniFi. При этом контроллер точек доступа UniFi может располагаться на сервере WNAM. На контроллере должен быть отключен "гостевой доступ"
  4. Для обеспечения надежности и безопасности обмена информацией между хотспотами и центральным узлом вашей сети требуется настроить VPN-туннели. В противном случае вам придется открыть доступ к порталу авторизации абонентов, и к RADIUS-серверу, для всего Интернета
  5. Трафик авторизации абонентов (страницы приветствия, реклама), трафик RADIUS и NetFlow будут идти до сервера WNAM в туннеле, а остальной абонентский трафик (доступ в интернет) - напрямую через локального провайдера Интернет
  6. В качестве VPN-сервера используется OpenVPN с парольной авторизацией
Для настройки площадок рекомендуется придерживаться непересекающейся схемы IP-адресации клиентских подсетей. Адресация - частная. В данном примере пусть:
Внешний (публичный) адрес сервера 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

Создайте сертификаты согласно инструкции отсюда: 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
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:

Конфигурация интерфейсов на хотспоте

Настройку маршрутизатора Микротик будем демонстрировать на примере первого клиента, имеющего 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

Внимание! Статической DNS записью мы переопределяем (для абонентов) адрес сервера авторизации с той целью, чтобы трафик авторизации шёл в VPN-туннеле.

Настройка трансляции адресов (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-адресов клиентов)

 

 

  • No labels