19. Служба captive-portal¶
19.1. Общие сведения¶
Служба captive-portal (далее по тексту – портал захвата, портал) обеспечивает пограничный контроль между общедоступной локальной сетью и сетью Интернет. Данная служба поддерживает два метода обнаружения портала клиентом:
CPD – Captive Portal Detection, обнаружение портала захвата, управляемое клиентом;
CPI – Captive Portal Identification (см. RFC 8910), обнаружение портала захвата, управляемое службой.
Служба поддерживает следующие возможности:
аутентификация клиентов через Radius-сервер;
квоты использования трафика;
правила контроля доступа.
Для настройки портала захвата предлагается следующий пример тестового стенда:
интерфейс en0 с адресом 10.0.0.1/24 – в клиентскую сеть;
интерфейс en1 – в сеть WAN/Интернет.
Для настройки портала захвата необходимо:
настроить и включить службу dns, ожидающую запросы на интерфейсе
en0;настроить службу dhcp с обслуживанием сети
10.0.0.0/24, адресом DNS10.0.0.1и шлюзом по умолчанию10.0.0.1;настроить firewall для клиентской сети, обеспечивающий доступ в Интернет через интерфейс
en1(например, с помощью настройкиsnat masquarade);настроить службу captive-portal, указав в ней интерфейс портала
en0;опционально: указать FQDN портала с помощью настройки
portal-fqdnслужбы captive-portal (в этом случае клиент должен уметь транслировать данное имя в IP-адрес).
При определении данных настроек запросы клиента на порт 80 (HTTP) проходят через портал, при этом клиент перенаправляется на web-страницу портала. Все остальные сетевые запросы клиента, за исключением DHCP- и DNS-запросов, блокируются до момента регистрации (с аутентификацией или без) клиента в портале.
19.2. Базовые настройки¶
Настройки службы captive-portal осуществляются на следующем уровне конфигурации:
[edit service captive-portal]
Для запуска службы применяется команда:
[edit service captive-portal]
# set enable
Для прекращения работы службы применяется команда:
[edit service captive-portal]
# del enable
Для указания интерфейса портала в клиентскую сеть применяется команда:
# set listen interface <interface-name>
где <interface-name> – имя существующего интерфейса.
На указанном интерфейсе служба ожидает входящие HTTP-запросы клиентов. Данная настройка является обязательной.
Для определения IP-адреса, принадлежащего интерфейсу портала, применяется команда:
# set listen ipv4 <address>
где <address> – IPv4-адрес в формате A.B.C.D.
По умолчанию используется IP-адрес, принадлежащий интерфейсу, указанному в настройке listen interface. Если у интерфейса потрала несколько адресов, указанный IP-адрес используется в качестве адреса портала.
Для определения номера порта, на котором ожидается соединение с клиентом, применяется команда:
# set listen port <port-number>
где <port-number> – число от 0 до 65535, по умолчанию – 2050.
Для определения полного доменного имени портала применяется команда:
# set portal-fqdn <domain>
где <domain> – строка длиной от 1 до 253 символов.
По умолчанию перенаправление осуществляется на IP-адрес интерфейса портала.
Данное доменное имя предлагается клиенту для перенаправления его HTTP-запросов, при этом клиент должен уметь транслировать указанное доменное имя в IP-адрес, например, через службу dns.
19.3. Настройка web-страницы портала¶
Для настройки внешнего вида (темы) web-страницы портала применяется команда:
# set theme default|none|external
где
default– тема по умолчанию;external– внешняя тема, задаваемая администратором;none– служебная тема (применима для справочной информации при указании параметраexternal).
Для настройки внешней темы (по параметру external) необходимо:
скопировать желаемые текстовые фрагменты (в виде текста или HTML-разметки) в файлы, имена которых оканчиваются на
_text, директории/system/captive-portal/text/;скопировать желаемые файлы картинок в файлы, имена которых оканчиваются на
_image, директории/system/captive-portal/images/.
Имена файлов, оканчивающиеся на _image и _text, доступны администратору на web-странице портала. Для их получения необходимо запустить портал с темой none или external (при отсутствии соответствующего файла в директории /system/captive-portal/)
19.4. Настройка фильтрации трафика¶
Для регулирования трафика, приходящего на IP-адрес портала или проходящего через портал от ещё незарегистрированных на портале клиентов, используются действия для трафика в соответсвии с правилами отбора. Предусмотрены следующие действия:
allow– разрешить;block– заблокировать.
При этом в правиле отбора так же указываются:
протокол: tcp или udp;
номер порта;
(опционально) IP-адрес сети назначения трафика.
По умолчанию на IP-адрес портала принимаются пакеты со следующими номерами портов:
порт 2050 (tcp) – номер порта портала по умолчанию (или заданный по настройке
listen);порт 53 (udp) – DNS-запросы на интерфейс портала, на котором может быть настроена служба dns (опционально);
порт 67 (udp) – DHCP-запросы на интерфейс портала, на котором должна быть настроена служба dhcp.
Для обеспечения работоспособности портала указанные номера портов должны быть разрешены.
Для указания других номеров (диапазонов) портов, например для доступа по протоколу SSH на интерфейс портала, применяется команда:
# set acl user-to-portal allow|block protocol tcp|udp|any <port-number-1>[-port-number-2]
где
allow|block– действие для трафика;tcp|udp|any– протокол;<port-number-1>– число от 1 до 65535;[-port-number-2]– число от 1 до 65535.
По умолчанию разрешён трафик с UDP-портов 53 и 67 и TCP-порта 2050.
Настройка портов не по умолчанию по данной команде применима только при наличии разрешающих правил для UDP-портов 53 и 67.
Для указания действия, применеяемого к проходящему через портал трафику от неаутентифицированных клиентов, применяется команда:
# set acl preauth-user allow|block protocol tcp|udp|any <port-1>[-port-2] [to <net>]
где
allow|block– действие для трафика;tcp|udp|any– протокол;<port-1>– число от 1 до 65535;[-port-2]– число от 1 до 65535;<net>– IPv4-адрес в форматеA.B.C.D[/mask].
Предупреждение
Предоставление доступа к внешним DNS-серверам с помощью данной команды может привести к снижению уровня безопасности.
Создание правил для клиентов, прошедших регистрацию и аутентификацию на портале, осуществляется посредством службы firewall.
Для добавления MAC-адреса в список доверенных применяется команда:
# set acl trusted-mac <trusted-mac-address>
где <trusted-mac-address> – строка в формате xx:xx:xx:xx:xx:xx.
При выполнии данной команды клиенту с указанным в настрйоке MAC-адресом разрешается доступ к сети без аутентификации.
19.5. Настройка аутентификации¶
Для определения IP-адреса Radius-сервера, используемого для аутентификации клиентов портала, применяется команда:
# set auth radius <address> secret <secret-string>
где
<address>– IPv4-адрес в форматеA.B.C.D;<secret-string>– секретная строка для получения доступа к Radius-серверу.
Для аутентификации клиент вводит свой логин и пароль в полях web-формы портала при подключении к сети на своём устройстве. Логин и пароль должны содержаться в базе Radius-сервера.
19.6. Настройка лимитов и тайм-аутов¶
Для определения максимального числа клиентов портала применяется команда:
# set limit max-clients <limit-max-clients-number>
где <limit-max-clients-number> – число от 1 до 65535, по умолчанию – 250.
Для настройки интервала проверки различных ограничений службы (например, квот и тайм-аутов) применяется команда:
# set timeout check <timeout-check-value>
где <timeout-check-value> – число секунд, по умолчанию – 15.
Для определения тайм-аута неактивного соединения неаутентифицированных клиентов применяется команда:
# set timeout idle-preauth <timeout-idle-preauth-value>
где <timeout-idle-preauth-value> – число секунд, по умолчанию – 1800.
Если клиент не осуществляет попытку аутентификации в течение указанного промежутка времени, он отключается от сети.
Для определения тайм-аута неактивного соединения аутентифицированных клиентов применяется команда:
# set timeout idle-auth <timeout-idle-auth-value>
где <timeout-idle-auth-value> – число секунд, по умолчанию – 7200.
Если клиент не использует сеть после успешной аутентификации в течение указанного промежутка времени, он отключается от сети.
Для определения тайм-аута сессии аутентифицированных клиентов применяется команда:
# set timeout session <timeout-session-value>
где <timeout-session-value> – число секунд, по умолчанию – 86400.
Клиент отключается от сети по истечении указанного промежутка времени. Для настройки неограниченного времени сессии устанавливается значение 0.
19.7. Настройка квот трафика¶
Предусмотрена настройка квот для загрузки (download) из Интернета клиентам и для выгрузки (upload) в Интернет от клиентов.
Для определения максимальной средней скорости загрузки клиентам применяется команда:
# set quota download rate <download-rate-value>
где <download-rate-value> – число KB/s, по умолчанию – 0 (не ограничено).
Для определения максимального объёма данных, разрешённых для загрузки клиентам, применяется команда:
# set quota download size <download-size-value>
где <download-size-value> – число KB, по умолчанию – 0 (не ограничено).
Для разрешения единоличного захвата полосы пропускания канала до тех пор, пока средняя скорость загрузки не превысит значение настройки quota download rate, применяется команда:
# set quota download bursting
По умолчанию настройка отключена.
Для настройки значения мультипликатора для расчёта интервала проверки квот трафика применяется команда:
# set quota rate-check-mul <rate-check-mul-value>
где <rate-check-mul-value> – число от 1 до 255, по умолчанию – 2.
Интервал проверки квот вычисляется по формуле:
<timeout-check-value> * <rate-check-mul-value>
где
<timeout-check-value>– значение аргумента настройкиtimeout check;<rate-check-mul-value>– значение аргумента настройкиquota rate-check-mul.
Команды для настройки выгрузки в Интернет от клиентов аналогичны вышеуказанным и указываются на уровне конфигурации quota upload (вместо quota download).
19.8. Прочие настройки¶
Для настройки уровня журналирования службы применяется команда:
# set log level low|middle|high|debug
где low|middle|high|debug – уровень журналирования, по умолчанию – middle.
19.9. Управление службой¶
Для просмотра клиентов службы применяется команда:
> show service captive-portal clients
Для закрытия сессии клиента службы применяется команда:
> service captive-portal client logout <ip>|<mac>|<account>
где <ip>|<mac>|<account> – IP-адрес, MAC-адрес или имя пользователя, с которым клиент аутентифицирован на портале.