Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Адреса 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:

...

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