Начиная с версии 1.3.886 система WNAM поддерживает прямое взаимодействие с порталом перехвата, организованном при помощи ПО CoovaChilli (https://coova.github.io/), которое является наследником Chillispot (http://www.chillispot.org/). ПО CoovaChilli широко применяется в качестве портала перехвата (хотспота) на прошивках Lede Project (https://lede-project.org/), OpenWrt (https://openwrt.org/) и dd-wrt (http://www.dd-wrt.com/). Эти прошивки устанавливаются взамен заводских на сотнях типов различных устройств (точек доступа). Таким образом, практически любую "бытовую" точку доступа можно превратить в хотспот, полностью взаимодействующий с системой управления Wi-Fi посредством доступа WNAM.

Для полноценной настройки системы WNAM для взаимодействия с хотспотом на OpenWrt/dd-wrt необходимо выполнить ряд действий, представленных ниже.

1. Проверка совместимости и выбор прошивки

Следует проверить список поддерживаемого оборудования (точек доступа) на сайтах:

Самостоятельно перепрошивая роутер открытой и бесплатной прошивкой, вы лишаетесь оригинальной гарантии производителя устройства.

Компания ООО "Нетамс" не оказывает бесплатных консультаций по выбору прошивки, перепрошивке устройств, восстановлению прошитых устройств после сбоев и так далее.

2. Выбор прошивки и установка её на устройство

Для установки прошивки следует воспользоваться инструкциями на сайте, откуда скачали прошивку, форумами и поисковыми системами. После установки прошивки необходимо произвести её первоначальную настройку: пароль, IP-адреса внутреннего и внешнего интерфейсов, трансляция адресов, настройка системы WLAN и так далее. Дальнейшие инструкции будут приведены в расчете на установленную прошивку OpenWrt Chaos Calmer 15.05 на точку доступа Ubiquiti UniFi. В этой точке доступа нет LAN интерфейса, встроенный единственный порт используется как WAN.

 3. Установка пакетов на точку доступа

Необходимо установить следующие пакеты:

  • coova-chilli;
  • dnsmasq;
  • dropbear;
  • kmod-ipt-conntrack;
  • kmod-mac80211;
  • kmod-tun;
  • softflowd.

OpenWrt не имеет графических средств настройки пакетов, поэтому их настройка представлена позже. 

4. Базовая настройка роутера

Необходимо настроить беспроводной интерфейс роутера: создать SSID и назначить IP-адресацию на интерфейсе br-lan.

Поскольку CoovaChilli использует туннели, пользователи гостевого портала не будут получать IP-адреса из этой сети, для этого необходимо отключить dhcp сервис на этом интерфейсе. Следовательно, выбор подсети для "внутреннего" интерфейса - дело произвольное и можно указать unmanaged.

Скриншоты основных окон настройки OpenWrt приведены ниже.

В данном примере используются:

  • адрес WAN интерфейса: 172.16.130.3/24;
  • адрес LAN интерфейса: 10.130.4.1/24;
  • SSID (имя сети): OpenWrt, не скрытая, без пароля.
Компания ООО "Нетамс" не оказывает бесплатных консультаций по настройке OpenWrt.

5. Настройка CoovaChilli

Портал перехвата CoovaChilli использует туннельные интерфейсы и сложную схему с генерацией конфигурационных файлов из файла-описания. Подробнее про это можно почитать по ссылке: https://wiki.openwrt.org/doc/howto/wireless.hotspot.coova-chilli.

Для настройки необходимо отредактировать единственный конфигурационный файл /etc/config/chilli, пример которого (с комментариями) приведен ниже:

config chilli
# option disabled 1
# Your HotSpotSystem account details
option radiusnasid "openwrt"
option radiussecret "secret" # это "секретный" ключ взаимодействия роутера и FreeRADIUS-сервера
option uamsecret "" # это поле надо оставить пустым
# WISPr settings
# It is possible your provider has specific demands on these values. But for WISPr the values are
# as shown below. (cc=2-digit ISO country; idd=phone-country;ac=phone-area-code)
# example: "isocc=se,cc=46,ac=584,network=CampingTiveden"
# the <SSID> does not actually need to be the SSID, but WISPr RFC calls it SSID
# the <sub-id> is just so you know which device on your network gave the problem. Can be Alfanumeric.
option locationname "K18-VM" # необязательное имя площадки, не используется
option radiuslocationname "<SSID>,<sub-ID>"
option radiuslocationid "isocc=<cc>,cc=<idd>,ac=<ac>,network=<SSID>"
# Radius parameters (change to the one for your provider)
option radiusserver1 172.16.130.5 # IP адрес вашего RADIUS сервера, обычно это адрес сервера WNAM
option radiusserver2 172.16.130.5 # IP адрес вашего второго RADIUS сервера, обычно это адрес резервного сервера WNAM, или то же адрес что и у первого сервера
# Your device's LAN interface on which to put the hotspot
option dhcpif br-lan # Имя интерфейса, на котором будет работать хотспот
# set DNS to whatever is fastest. On slow saturated lines, best use your local router for caching.
# on fast & wide lines, use or Google or your ISP's dns, whichever is fastest
option dns1 8.8.8.8 # адрес первого сервера DNS, можете использовать адреса серверов провайдера
option dns2 8.8.4.4 # адрес второго сервера DNS, можете использовать адреса серверов провайдера
# Tunnel and Subnet 
option tundev 'tun0'
option net 192.168.180.0/22 # ВНИМАНИЕ: это будут IP адреса устройств ваших клиентов. Необходимо, чтобы эта сеть соответствовала той, что вы укажете в настройках площадки
option radiuslisten 192.168.182.1 # ВНИМАНИЕ: это виртуальный адрес хотспота. Необходимо, чтобы он соответствовал адресу, указанному в "сервере доступа" WNAM
option lease 86400 # 1 day
option leaseplus 600 # plus 10 minutes
# Universal access method (UAM) parameters
option uamserver "http://172.16.130.5:8080/cp/coovachilli" # ссылка на интерфейс авторизации пользователей, сервер WNAM
option uamuiport 4990 # HotSpot UAM "UI" Port (on subscriber network)
option uamanydns 1
#option uamaliasip 1.0.0.1 # default: http://1.0.0.1 will goto login page
option uamaliasname login # http://login will goto login page
#option uamlogoutip 1.0.0.0 # default: http://1.0.0.0 will logout
# # default: http://logout will logout
option nouamsuccess 1 # no success page, to original requested URL
# Hosts; services; network segments the client can access without first authenticating (walled garden)
# Hosts are evaluated every 'interval', but this does not work well on multi-homed (multi-IP'ed) hosts, use IP instead.
option uamallowed "172.16.130.5" # необходимо указать IP адрес сервера WNAM
# Domain suffixes the client can access without first authenticating (walled garden)
# Host on the domain are checked by spying on DNS requests, so this does work for multi-homed hosts too.
#option uamdomain ".paypal.com,.paypalobjects.com,.worldpay.com,.rbsworldpay.com,.adyen.com,.hotspotsystem.com"
# Various debug and optimization values
option swapoctets 1 # swap input and output octets
option interval 3600 # config file and host lookup refresh
# Add the chilli firewall rules
option ipup '/etc/chilli/up.sh'
option ipdown '/etc/chilli/down.sh'

Согласно приведенной выше конфигурации особо важными параметрами надо считать следующие:

  • option radiussecret - пароль взаимодействия с сервером WNAM по протоколу RADIUS;
  • option radiusserver1 - адрес сервера, на котором работает FreeRADIUS (обычно совпадает с адресом сервера WNAM);
  • option net - подсеть с IP-адресами клиентов (площадка);
  • option radiuslisten - виртуальный адрес сервера доступа;
  • option uamserver - ссылка на внешний портал авторизации - сервер WNAM;
  • option uamallowed - разрешенный адрес - сервер WNAM.

В некоторых случаях, в firewall необходимо дополнительно разрешить маршрутизацию между интерфейсом авторизации (br-lan в нашем случае) и интерфейсом? на котором находится сервер WNAM. Поскольку  обычно используется частная адресация на сетевых интерфейсах, к которым подключены абоненты, необходимо для всех своих площадок и серверов доступа выбирать уникальные IP-адреса и подсети.

Затем необходимо запустить CoovaChilli, выполнив:

/etc/init.d/chilli start

Если все в порядке, то в выводе команды ps можно обнаружить следующее:

chilli -c /var/run/chilli_cfg021cfa.conf --pidfile /var/run/chilli_cfg021cfa.pid --cmdsocket /var/run/chilli_cfg021cfa.sock --unixipc /var/run/chilli_cfg021cfa.ipc

6. Настройка softflowd

Для отслеживания посещенных абонентами ресурсов необходимо установить пакет softflowd, который является коллектором NetFlow данных. После установки необходимо отредактировать его конфигурационный файл /etc/config/softflowd следующим обзазом: 

config softflowd
option enabled '1'
option interface 'tun0'
option pcap_file ''
option timeout ''
option max_flows '8192'
option host_port '172.16.130.5:20002'
option pid_file '/var/run/softflowd.pid'
option control_socket '/var/run/softflowd.ctl'
option export_version '5'
option hoplimit ''
option tracking_level 'full'
option track_ipv6 '0'
option sampling_rate '1'

Важных параметров три:

  • имя интерфейса, на котором проводить сбор данных (tun0);
  • частота сэмплинга (sampling_rate=1);
  • адрес и порт коллектора (это внешний адрес сервера WNAM и порт 20002 (172.16.130.5:20002)).
Поскольку softflowd не позволяет указывать адрес интерфейса-источника трафика NetFlow, он будет выбран автоматически, и обычно это WNAM интерфейс, что создает дополнительную задачу при настройке сервера доступа (инструкция представлена ниже).

Запустите softflowd, выполнив: 

/etc/init.d/softflowd restart 

7. Настройка системы WNAM 

В интерфейсе администратора системы WNAM необходимо добавить запись о сервере доступа (раздел "Конфигурация" → "Сервера доступа").
Следует обратить внимание, что в настройках сервера доступа в качестве его адреса указан виртуальный адрес 192.168.182.1 (это адрес, который будет выставлен в поле NAS-IP-Address поступающих от сервера доступа пакетов RADIUS). При этом сами RADIUS и NetFlow пакеты будут поступать с адреса 172.16.130.3. Необходимо этот адрес прописать в зеленом поле комментариев в формате "netflow_ip=172.16.130.3", а также в секции клиентов файла настроек FreeRADIUS /etc/freeradius/clients.conf:
client 172.16.130.0/24 {
  secret=secret
}

Затем необходимо создать запись о площадке как показано на рисунке (раздел "Конфигурация" → "Площадки").

Следует обратить внимание, что здесь задана клиентская подсеть 192.168.180.0/22, так же как она указана в /etc/config/chilli на роутере. Необходимо также выбрать ранее созданный "разрешенный сервер доступа".
CoovaChilli поддерживает следующие типы ограничений:
  • по объему трафика;
  • по длительности сессии доступа;
  • по скорости передачи данных.

При этом все остальные ограничения системы WNAM (например, число авторизационных СМС, рабочие часы), а также параметры авторизации, перенаправления, социальные сети и т.п. так же полностью поддерживаются независимо от типа устройства доступа. В настоящий момент не реализован принудительный сброс сессии абонента/всех сессий абонента.

8. Проверка

При подключении к беспроводной сети на роутере OpenWrt, на котором работает настроенный хотспот CoovaChilli, происходит следующее. В момент попытки получения мобильным устройством абонента IP-адреса CoovaChilli перехватывает этот запрос, выделяет абоненты адрес из пула, создает соответствующие правила в iptables и запорачивает трафик в туннельный интерфейс tun0. При попытке устройства абонента обратиться по HTTP-ссылке производится редирект сессии абонента на внешний портал авторизации согласно настройкам в /etc/config/chilli, в нашем примере это http://172.16.130.5:8080/cp/coovachilli. Это - ссылка на сервер WNAM. Следует обратить внимание на обязательные параметры /cp/coovachilli в URL. При редиректе дополнительно передаются следующие параметры роутера (пример):
  • res=notyet;
  • uamip=192.168.182.1;
  • uamport=3990;
  • challenge=161c53097a163d8263c94d720676f431;
  • called=DC-9F-DB-89-80-C9;
  • mac=4C-57-CA-XX-XX-XX;
  • ip=192.168.180.5;
  • nasid=openwrt;
  • sessionid=5807bc5900000002;
  • userurl=http%3a%2f%2fbash.im%2f;
  • md=8E71CEACE13C1906A5D1D1F9C2EC19E6.
Все эти параметры обрабатываются сервером WNAM по стандартной для всех типов устройств схеме (проверка авторизованности по МАС-адресу, авторизация при необходимости, показ рекламы, вход через соцсети и т.п.). По завершении всех процессов производится допуск абонента в сеть, то есть браузеру абонента выдается автоматически отправляемая форма, которая вызывает попытку авторизацию по МАС-адресу на портале CoovaChilli (192.168.182.1:3390). CoovaChilli, в свою очередь, использует RADIUS-авторизацию у сервера WNAM и начинает сессию доступа, что отображается в RADIUS-пакетах (freeradius в отладочном режиме):
rad_recv: Access-Request packet from host 172.16.130.3 port 47961, id=81, length=310
ChilliSpot-Version = "1.3.1-svn"
User-Name = "4C:57:CA:XX:XX:XX"
User-Password = "password"
Service-Type = Login-User
Acct-Session-Id = "5814ac5400000003"
Framed-IP-Address = 192.168.180.5
NAS-Port-Type = Wireless-802.11
NAS-Port = 3
NAS-Port-Id = "00000003"
Calling-Station-Id = "4C-57-CA-XX-XX-XX"
Called-Station-Id = "DC-9F-DB-89-80-C9"
NAS-IP-Address = 192.168.182.1
NAS-Identifier = "openwrt"
WISPr-Location-ID = "isocc=<cc>,cc=<idd>,ac=<ac>,network=<SSID>"
WISPr-Location-Name = "<SSID>,<sub-ID>"
WISPr-Logoff-URL = "http://192.168.182.1:3990/logoff"
Message-Authenticator = 0x0d4bdbdbd05dc45b3d3d2fe9eb2340ef
rad_recv: Accounting-Request packet from host 172.16.130.3 port 35749, id=14, length=252
ChilliSpot-Version = "1.3.1-svn"
ChilliSpot-Attr-10 = 0x00000001
Event-Timestamp = "окт 29 2016 17:08:14 MSK"
User-Name = "4C:57:CA:XX:XX:XX"
Acct-Status-Type = Start
Acct-Session-Id = "5814ac5400000003"
Framed-IP-Address = 192.168.180.5
NAS-Port-Type = Wireless-802.11
NAS-Port = 3
NAS-Port-Id = "00000003"
Calling-Station-Id = "4C-57-CA-XX-XX-XX"
Called-Station-Id = "DC-9F-DB-89-80-C9"
NAS-IP-Address = 192.168.182.1
NAS-Identifier = "openwrt"
WISPr-Location-ID = "isocc=<cc>,cc=<idd>,ac=<ac>,network=<SSID>"
WISPr-Location-Name = "<SSID>,<sub-ID>"

Одновременно в интерфейсе администратора системы WNAM появится запись о сессии как показано на рисунке.

Она может также сопровождаться детализацией трафика по потокам, если softflowd настроен верно.

На этом настройка OpenWrt/CoovaChilli/WNAM завершена.


  • No labels