Настройка Captive Portal в pfSense - полное руководство
Captive Portal обеспечивает принудительную авторизацию пользователей перед предоставлением доступа к сети. В данном руководстве рассматривается полный цикл настройки: от создания зоны и выбора метода аутентификации до кастомизации страницы портала, настройки ограничений полосы пропускания и устранения типичных проблем. Перед началом настройки убедитесь, что интерфейс, на котором будет работать портал, уже сконфигурирован и имеет назначенный IP-адрес. Для работы с VLAN интерфейс VLAN также должен быть предварительно создан и назначен.
Зоны Captive Portal
Зона определяет набор интерфейсов, на которых действует портал авторизации, и объединяет все связанные настройки: метод аутентификации, страницу портала, таймауты, ограничения трафика и списки разрешённых адресов. Каждая зона функционирует независимо.
Создание зоны
Для создания новой зоны перейдите в Services > Captive Portal и нажмите Add. Укажите имя зоны (допускаются латинские буквы, цифры и символ подчёркивания) и описание, затем нажмите Save & Continue. После сохранения откроется страница конфигурации зоны.
Привязка интерфейсов
В поле Interface выберите один или несколько интерфейсов, на которых будет работать портал. Один интерфейс не может принадлежать нескольким зонам одновременно. При использовании мостовых интерфейсов в качестве интерфейса зоны необходимо указывать сам мост (bridge), а не его участников.
Методы аутентификации
pfSense предоставляет несколько способов аутентификации пользователей на портале.
Аутентификация через бэкенд
При выборе метода Use authentication backend система проверяет учётные данные через настроенный источник аутентификации: локальную базу пользователей pfSense, сервер LDAP или сервер RADIUS. Пользователь вводит логин и пароль на странице портала, и система выполняет проверку через выбранный бэкенд.
Для настройки RADIUS-сервера перейдите в System > User Manager > Authentication Servers и создайте запись типа RADIUS с указанием адреса сервера, порта, общего секрета и протокола (PAP, CHAP или MS-CHAPv2). После этого выберите созданный сервер в настройках зоны Captive Portal.
Ваучеры
Система ваучеров позволяет генерировать одноразовые коды доступа с заданным временем действия. Это удобно для гостевых сетей отелей, конференций и публичных точек доступа, где необходимо предоставить временный доступ без создания учётных записей.
Для активации ваучеров перейдите на вкладку Vouchers в настройках зоны. Система генерирует RSA-ключи для подписи ваучеров, что предотвращает создание поддельных кодов. Настройте параметры:
- Roll - пакет ваучеров с уникальным номером
- Count - количество ваучеров в пакете
- Minutes per ticket - время действия каждого ваучера
Сгенерированные ваучеры можно экспортировать в CSV для печати или распространения.
Без аутентификации (click-through)
При выборе метода None пользователю достаточно открыть страницу портала и нажать кнопку подтверждения. Этот режим подходит для сценариев, где требуется только принятие условий использования без ввода учётных данных.
RADIUS MAC Authentication
Режим отправляет MAC-адрес клиента в качестве имени пользователя и настроенный секрет в качестве пароля на RADIUS-сервер. Это позволяет реализовать автоматическую авторизацию устройств на основе их MAC-адресов без участия пользователя.
Управление сессиями
Таймауты
- Idle timeout - время бездействия в минутах, после которого клиент будет отключён. Бездействием считается отсутствие сетевого трафика от клиента
- Hard timeout - максимальная продолжительность сессии в минутах, после которой клиент отключается независимо от активности
Квоты трафика
Поле Traffic Quota позволяет задать максимальный объём переданных данных (загрузка и отдача суммарно), при превышении которого клиент отключается от сети. Квота учитывается в мегабайтах.
Одновременные подключения
Параметр Concurrent user logins определяет поведение при повторной авторизации:
| Значение | Поведение |
|---|---|
| Multiple | Неограниченное количество одновременных сессий (по умолчанию) |
| Last Login | Разрешает только последнюю сессию, предыдущие отключаются |
| First Login | Запрещает повторную авторизацию до завершения текущей сессии |
| Disabled | Множественные подключения запрещены |
Максимальное количество одновременных подключений с одного IP-адреса по умолчанию ограничено четырьмя соединениями для предотвращения исчерпания ресурсов.
Ограничение полосы пропускания
Поля Default download speed и Default upload speed задают ограничение скорости в килобитах в секунду для каждого авторизованного клиента. Значение 0 или пустое поле означает отсутствие ограничения.
При использовании RADIUS-сервера индивидуальные ограничения можно задавать через атрибуты ответа:
pfSense-Bandwidth-Max-Down- максимальная скорость загрузкиpfSense-Bandwidth-Max-Up- максимальная скорость отдачиpfSense-Max-Total-Octets- квота общего объёма трафика
Атрибуты RADIUS имеют приоритет над настройками зоны, что позволяет назначать различные тарифные планы на уровне сервера аутентификации.
MAC Passthrough
MAC passthrough позволяет устройствам проходить через портал без повторной авторизации на основе ранее зарегистрированного MAC-адреса.
Автоматическое добавление
При включении параметра Pass-through MAC Auto Entry MAC-адрес клиента автоматически добавляется в список разрешённых после успешной аутентификации. Опция Automatic addition with username сохраняет имя пользователя вместе с MAC-адресом для аудита.
Ручное управление
Вкладка MACs позволяет вручную добавлять MAC-адреса с указанием действия: Pass (пропускать без авторизации) или Block (блокировать полностью). Ручные записи полезны для принтеров, IP-телефонов и других устройств, не способных пройти веб-авторизацию.
Ограничения MAC-фильтрации
Если между клиентом и интерфейсом pfSense находится маршрутизатор (а не коммутатор), MAC-адрес клиента заменяется MAC-адресом промежуточного маршрутизатора. В этом случае MAC-фильтрацию следует отключить, так как все клиенты за маршрутизатором будут иметь одинаковый MAC-адрес.
Pass-through Credits
Механизм кредитов позволяет пропускать определённое количество подключений без аутентификации:
- Credits allowed per MAC - количество бесплатных подключений
- Waiting period - период восстановления кредитов в часах
- Reset on attempted access - предотвращает восстановление кредитов при повторных попытках
HTTPS-портал
По умолчанию портал работает по HTTP. Для включения HTTPS:
- Перейдите в System > Cert Manager и создайте или импортируйте SSL-сертификат
- В настройках зоны установите флаг Login - HTTPS
- Укажите HTTPS server name - полное доменное имя (FQDN), соответствующее Common Name сертификата
- Выберите SSL-сертификат в поле SSL Certificate
Параметр Disable HTTPS Forwards отключает перенаправление запросов с порта 443. Это рекомендуется включить, так как перенаправление HTTPS-запросов вызывает предупреждения о несоответствии сертификата в браузере клиента.
Кастомизация страницы портала
Стандартная кастомизация
Базовые параметры оформления доступны непосредственно в настройках зоны:
- Custom Logo - логотип организации, отображаемый на странице авторизации
- Custom Background - фоновое изображение страницы портала
- Terms and Conditions - текст условий использования, который пользователь должен принять
HTML-шаблоны
Для полного контроля над внешним видом портала можно загрузить собственные HTML-страницы:
- Portal page - основная страница авторизации
- Error page - страница ошибки аутентификации
- Logout page - страница подтверждения выхода
HTML-шаблоны поддерживают PHP-код для динамического контента. Файлы изображений, CSS и JavaScript загружаются через File Manager в настройках зоны.
Разрешённые IP-адреса и хосты
Вкладки Allowed IP Addresses и Allowed Hostnames позволяют указать адреса и доменные имена, доступные клиентам до прохождения авторизации. Это необходимо для доступа к внешним ресурсам аутентификации, DNS-серверам, серверам обновлений и другим критически важным сервисам.
Интеграция с RADIUS Accounting
При использовании RADIUS-сервера pfSense поддерживает отправку accounting-сообщений:
- Accounting Start - при успешной авторизации клиента
- Accounting Stop - при завершении сессии (таймаут, отключение, превышение квоты)
- Interim Updates - периодические обновления статуса сессии
Для настройки укажите сервер учёта в параметрах RADIUS зоны. Параметр NAS Identifier позволяет задать идентификатор устройства, отправляемый в RADIUS-запросах, что упрощает идентификацию источника в журналах сервера аутентификации.
Опция Reauthentication отправляет запрос проверки доступа каждую минуту. Если RADIUS-сервер отклоняет запрос, клиент отключается. Это полезно для сценариев, когда администратор RADIUS-сервера должен иметь возможность немедленно прекратить доступ пользователя.
Устранение неполадок
Портал не появляется
- Убедитесь, что зона включена (флаг Enable установлен)
- Проверьте, что интерфейс зоны соответствует интерфейсу, к которому подключен клиент
- Убедитесь, что на интерфейсе настроены правила файрвола , разрешающие DNS-трафик (порт 53)
- Проверьте, что клиент получает IP-адрес из правильной подсети
- При использовании bridge убедитесь, что зона привязана к интерфейсу моста, а не к участникам
Проблемы с перенаправлением
- Если клиент не перенаправляется автоматически, попробуйте открыть любой HTTP-сайт (не HTTPS)
- HTTPS-сайты не могут быть перехвачены и перенаправлены из-за TLS - это ограничение протокола, а не pfSense
- Проверьте, что DNS-сервер, используемый клиентом, доступен до авторизации
- Убедитесь, что клиент использует DNS-сервер pfSense, а не сторонний
Предупреждения HTTPS
Предупреждения о сертификате при перенаправлении HTTPS-запросов являются ожидаемым поведением. Сертификат портала не может соответствовать домену, к которому обращался клиент. Включите Disable HTTPS Forwards для предотвращения перенаправления HTTPS-трафика.
RADIUS не отвечает
- Проверьте доступность RADIUS-сервера командой
pingилиradtest - Убедитесь в совпадении общего секрета (shared secret) на pfSense и RADIUS-сервере
- Проверьте правила файрвола - порты 1812 (аутентификация) и 1813 (учёт) должны быть открыты
- Проверьте журналы RADIUS-сервера на предмет отклонённых запросов
- Убедитесь, что IP-адрес pfSense добавлен в список разрешённых клиентов на RADIUS-сервере
Клиент авторизован, но нет доступа в интернет
- Проверьте правила файрвола на интерфейсе зоны - должно быть разрешающее правило для авторизованных клиентов
- Убедитесь, что NAT настроен корректно для подсети портала
- Проверьте таблицу состояний в Diagnostics > States на наличие записей для клиента