Поддержка взаимодействия WNAM с маршрутизатором pfSense (http://www.pfsense.org) появилась, начиная с версии ПО WNAM 1.2.567.
pfSense представляет собой основанный на кодовой базе ОС FreeBSD специализированный дистрибутив, позволяющий организовать на основе x86 компьютера полноценный маршрутизатор, шлюз сети Internet, с большим набором возможностей и управлением через веб-интерфейс. Переда началом настойки взаимодействия вашего сервера pfSense c WNAM вы должны настроить и отладить сам pfSense, в том числе настроить сервис DHCP, маршрутизацию, правила межсетевого экранирования и трансляции адресов между локальной (где находятся любый точки доступа, и абоненты Wi-Fi), и глобальной (внешней, Internet) сетью.
При работе в качестве шлюза с авторизацией доступа pfSense использует встроенный компонент Captive Portal. Необходимо создать новый портал через меню "Services - Captive Portal". Портал здесь называется "зоной":
Необходимо задать имя портала (зоны), интерфейс, на котором он будет работать (это интерфейс LAN, на котором находятся Wi-Fi точки доступа, и их абоненты).
Далее, нажав на кнопку "е", необходимо установить параметры портала, как показано на рисунке:
Ниже перечислены параметры портала, которые необходимо заполнить:
Параметр | Описание |
---|---|
Interfaces | Выбрать LAN - имя интерфейса, на котором будет работать портал |
Idle timeout | Тайм-аут неактивности пользователя (сессия закончится, если не будет трафика указанное количество минут) |
Hard timeout | Абсолютный тайм-аут сессии пользователя, в минутах. Может быть переопределен в настройках "Ограничения" |
Pre-authentication redirect URL | Указать ссылку на сервер WNAM, в формате http://адрес_сервера:порт/cp/pfsense например |
Per-user bandwidth restriction | Установите значение ограничений скорости передачи для абонента (в кбит/с), либо просто включите параметр, поля ограничений не заполняйте, и укажите значение в меню WNAM ("Ограничения") глобально или для площадки |
Authentication | RADIUS Authentication - RADIUS Protocol - PAP |
Primary RADIUS server - IP address | IP-адрес сервера WNAM, например 10.200.0.2 |
Primary RADIUS server - Shared secret | Пароль взаимодействия с RADIUS-сервером, должен совпадать с аналогичным параметром в файле /etc/freeradius/clients.conf на сервере WNAM |
Accounting | send RADIUS accounting packets |
Accounting updates | interim update |
RADIUS NAS IP attribute | WAN, указать имя (и адрес) внешнего сетевого интерфейса |
Session-Timeout | Use RADIUS Session-Timeout attributes |
Type | default |
MAC address format | default |
Portal page contents | взять файл по ссылке: http://www.netams.com/files/wnam/misc/index.php и загрузить его в данном пункте меню настроек. при помощи этого файла производится перенаправление перехваченной порталом pfSense HTTP-сессии абонента на сервер WNAM для целей авторизации |
В файле, который определяет перенаправление на внешний портал авторизации (сервер WNAM), index.php, необходимо изменить идентификатор площадки (параметр "site-id"), указав номер площадки из конфигурации WNAM. В противном случае будет подставляться имя зоны (в примере - HomeK18). Вы также можете создавать зоны с именами (идентификаторами), численно равными номеру площадки из WNAM. Всё это требуется, если вы используете более чем одну зону на одном портале pfSense.
Необходимо также разрешить трафик в обход портала pfSense для еще не авторизованных клиентов. Как минимум, до DNS-сервера (в примере - до сервера Google 8.8.8.8), и до самого портала авторизации WNAM (в примере: 172.16.130.5):
Для учёта сведений по потокам трафика (на какие внешние ресурсы обращались абоненты), необходимо организовать сбор сведений по трафику и отправку из в сторону WNAM по протоколу NetFlow. Для этого вы должны установить и настроить пакет softflowd (включен в набор штатных пакетов pfSense). Параметры настройки приведены ниже:
Вы должны указать интерфейс (LAN), IP-адрес сервера WNAM, порт коллектора (20002), протокол (5), тип трекинга (full), а также таймауты. Затем необходимо включить softflowd в меню "Status - Services".
Внимание: сбор статистики по объему трафика ведется по значениям счетчиков, получаемых в сообщениях RADIUS Accounting-Interim, а статистика по самому трафику (кто и какие ресурсы посещал) - по NetFlow.
Внимание: WNAM устанавливает параметр отправки промежуточных сообщений аккаунтинга (счетчики трафика абонента) в 5 минут (по умолчанию в pfSense - 1 минута).
Для определения имен устройств абонентов необходимо дополнительно включить механизм информирования сервера WNAM о присвоении IP-адреса абонентским устройствам встроенным в pfSense DHCP-сервером.
- Необходимо настроить и проверить сам DHCP-сервер. Затем, поскольку вы будете вручную вносить изменения в текстовый конфигурационный файл сервера, через Web-интерфейс донастраивать DHCP-сервер нельзя.
- Необходимо зайти в консоль (shell) pfSense и установить пакеты:
- pkg bootstrap
- pkg install perl5
- pkg install p5-IO-Socket-IP
- pkg install joe
- Необходимо создать файл-скрипт оповещения WNAM: /usr/local/bin/joe /usr/local/bin/wnam-dhcpd-bridge.pl
#!/usr/local/bin/perl
use constant WNAM_HOST => "172.16.130.5";
use IO::Socket::INET;
$| = 1;
my $sock = new IO::Socket::INET(PeerAddr => WNAM_HOST, PeerPort => 20001, Proto => 'tcp', Timeout => 0.5) or undef $sock;
if (defined $sock) {
if (defined $ARGV[0]){
my $type = $ARGV[0];
my $ip = $ARGV[1];
my $mac = uc $ARGV[2];
my $name = $ARGV[3];
if (defined $type and defined $ip and defined $mac) {
print $sock "DHCP type=$type ip=$ip mac=$mac name=$name\n";
}
}
} - Необходимо дать скрипту права на исполнение: chmod +x /usr/local/bin/wnam-dhcpd-bridge.pl
- Необходимо отредактировать конфигурационный файл сервера DHCP: /usr/local/bin/joe /var/dhcpd/etc/dhcpd.conf и добавить в него строки:
on commit {
set clip = binary-to-ascii(10, 8, ".", leased-address);
set clhw = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));
set clhost = pick-first-value(host-decl-name, option fqdn.hostname, option host-name, "");
execute("/usr/local/bin/wnam-dhcpd-bridge.pl", "commit", clip, clhw, clhost);
} - Последний шаг - перезапуск сервиса DHCP: "Services - DHCP Server".