Для организации провайдером услуги СМС-авторизации на основе хотспотов, подключенных через сеть Интернет, мы рекомендуем придерживаться описанной ниже схемы.
Данный сценарий вам подходит, если:
Сценарий не подходит, если:
Рекомендуемая схема предполагает:
Конфигурация интерфейсов на сервере
Необходимо установить сетевые интерфейсы:
Конфигурация 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
Статической 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
Для конфигурации системы следует настроить сервер доступа:
А также следует произвести настройку площадки. Для этого установить IP-адрес подсети 10.1.1.0/24 (диапазон IP-адресов клиентов).