Типы интерфейсов pfSense - PPPoE, GRE, GIF, LAGG, QinQ
pfSense предоставляет набор виртуальных типов интерфейсов для решения различных сетевых задач: от подключения к провайдеру через PPPoE до объединения физических каналов в отказоустойчивую группу через LAGG. Каждый виртуальный интерфейс после назначения в системе функционирует аналогично физическому - получает собственный IP-адрес, набор правил файрвола и доступ к сетевым сервисам. В данном руководстве рассматривается конфигурация каждого типа интерфейса, типичные сценарии применения и устранение неполадок.
PPPoE
PPPoE (Point-to-Point Protocol over Ethernet) используется интернет-провайдерами для аутентификации абонентов и назначения сетевых параметров. Протокол инкапсулирует PPP-кадры в Ethernet, добавляя заголовок PPPoE к каждому пакету.
Настройка PPPoE
Для создания PPPoE-подключения перейдите в Interfaces > Assignments на вкладку PPPs, нажмите Add и выберите тип PPPoE.
Основные параметры:
- Link Interface - физический интерфейс, через который устанавливается PPPoE-соединение (обычно WAN)
- Username - имя пользователя, предоставленное провайдером (обычно в формате email, например
user@isp.com) - Password - пароль для аутентификации
- Service Name - имя сервиса провайдера (большинство провайдеров оставляют пустым). Некоторые провайдеры требуют отправки значения NULL вместо пустой строки
После создания PPP-интерфейса назначьте его на WAN через Interfaces > Assignments и выберите тип конфигурации IPv4 - PPPoE.
MTU и MSS Clamping
PPPoE добавляет 8 байт заголовка к каждому пакету, уменьшая эффективный MTU с 1500 до 1492 байт. Это может приводить к проблемам с фрагментацией и потере крупных пакетов, особенно при прохождении через маршрутизаторы, блокирующие ICMP-сообщения Path MTU Discovery.
pfSense автоматически применяет TCP MSS Clamping - механизм корректировки поля Maximum Segment Size в TCP SYN-пакетах. MSS Clamping уменьшает запрашиваемый размер сегмента до значения, совместимого с MTU интерфейса, предотвращая фрагментацию на уровне TCP.
Параметр Force MTU позволяет принудительно задать MTU, отличное от согласованного с провайдером. Это нарушает RFC 1661 и может привести к разрыву соединения - используйте только при явной необходимости.
Бэкенд PPPoE
pfSense поддерживает два бэкенда для PPPoE:
- MPD - бэкенд по умолчанию, работает в пользовательском пространстве
- if_pppoe - ядерный бэкенд, обеспечивающий более высокую производительность за счёт обработки PPPoE непосредственно в ядре
Для высокоскоростных подключений рекомендуется использовать if_pppoe, так как MPD может создавать узкое место из-за обработки пакетов в одной очереди.
GRE-туннели
GRE (Generic Routing Encapsulation) создаёт нешифрованный туннель между двумя конечными точками, инкапсулируя пакеты одного протокола внутри другого. GRE позволяет передавать IPv4 и IPv6 трафик одновременно через один туннель. Протокол разработан Cisco и широко поддерживается сетевым оборудованием различных производителей.
Создание GRE-туннеля
Для создания GRE-туннеля перейдите в Interfaces > Assignments на вкладку GRE и нажмите Add.
| Параметр | Описание |
|---|---|
| Parent Interface | Физический интерфейс (обычно WAN), через который устанавливается туннель |
| Remote Address | Маршрутизируемый внешний IP-адрес удалённого устройства |
| Local Tunnel Address | Внутренний IPv4-адрес туннеля на локальной стороне |
| Remote Tunnel Address | Внутренний IPv4-адрес туннеля на удалённой стороне |
| Tunnel Subnet | Маска подсети для туннельных адресов (обычно /30) |
После создания назначьте GRE-интерфейс через Interfaces > Assignments и включите его. Система автоматически создаёт динамический шлюз для маршрутизации трафика через туннель.
Маршрутизация через GRE
Для направления трафика удалённых подсетей через GRE-туннель добавьте статические маршруты в System > Routing > Static Routes, указав динамический шлюз GRE-туннеля в качестве шлюза. Не забудьте создать правила файрвола на GRE-интерфейсе для разрешения необходимого трафика.
GIF-туннели
GIF (Generic tunnel InterFace) аналогичен GRE, но обладает рядом отличий. GIF поддерживает туннелирование IPv6 через IPv4 и наоборот, что делает его основным инструментом для получения IPv6-связности через туннельных брокеров (например, Hurricane Electric). В отличие от GRE, GIF не может передавать IPv4 и IPv6 одновременно через один туннель, но поддерживает мостовое соединение (bridging) на уровне L2.
Создание GIF-туннеля
Настройка выполняется в Interfaces > Assignments на вкладке GIF. Параметры аналогичны GRE:
- Parent Interface - физический интерфейс для туннеля
- Remote Address - внешний адрес удалённой стороны
- Local Tunnel Address - внутренний адрес туннеля (для IPv6 обычно /64)
- Remote Tunnel Address - адрес удалённой стороны туннеля
IPv6 через туннельного брокера
Для получения IPv6-связности через Hurricane Electric:
- Зарегистрируйтесь на tunnelbroker.net и создайте туннель
- Создайте GIF-интерфейс с параметрами, предоставленными брокером
- Назначьте GIF-интерфейс и настройте IPv6-адрес
- Добавьте маршрут по умолчанию для IPv6 через шлюз туннеля
LAGG (Link Aggregation)
LAGG объединяет несколько физических сетевых интерфейсов в один логический канал. В зависимости от выбранного протокола LAGG обеспечивает увеличение пропускной способности, отказоустойчивость или комбинацию обоих преимуществ.
Поддерживаемые протоколы
| Протокол | Описание | Требует настройки коммутатора |
|---|---|---|
| LACP | IEEE 802.3ad, согласование с коммутатором, отказоустойчивость и балансировка | Да |
| Failover | Весь трафик через основной интерфейс, резервный активируется при отказе | Нет |
| Load Balance | Статическая балансировка исходящего трафика без мониторинга состояния | Да |
| Round Robin | Последовательная отправка через интерфейсы | Да |
| None | Отключает передачу трафика, сохраняя логический интерфейс | - |
LACP является наиболее распространённым протоколом, обеспечивающим как отказоустойчивость, так и увеличение пропускной способности. Failover не требует поддержки со стороны коммутатора и подходит для сценариев, где важна только отказоустойчивость.
Создание LAGG
Перейдите в Interfaces > Assignments на вкладку LAGGs и нажмите Add:
- Выберите интерфейсы-участники в поле Member Interfaces (интерфейсы не должны быть назначены в системе)
- Выберите протокол в поле LAGG Protocol
- Для LACP и Load Balance выберите алгоритм хэширования
- Добавьте описание и нажмите Save
После создания назначьте LAGG-интерфейс через Interfaces > Assignments. LAGG-интерфейс можно использовать как носитель VLAN - создавайте VLAN поверх LAGG для сегментации с агрегацией каналов.
Требования и ограничения
- Скорость и MTU всех участников LAGG должны совпадать
- Все порты должны работать в режиме full-duplex
- Один поток (между двумя хостами) не превысит пропускную способность одного участника, так как хэширование распределяет потоки, а не пакеты
- LAGG несовместим с altq (шейпер трафика). Для ограничения трафика на LAGG используйте Limiters или создавайте VLAN поверх LAGG
- LACP требует стекируемых коммутаторов для работы с несколькими коммутаторами
QinQ (802.1ad)
QinQ (Q-in-Q, двойное тегирование) добавляет второй тег VLAN к уже тегированному кадру. Внешний тег (S-Tag, EtherType 0x88a8) идентифицирует сервисный VLAN провайдера, внутренний тег (C-Tag, EtherType 0x8100) сохраняет оригинальный VLAN клиента. Это позволяет транспортировать множество клиентских VLAN через единый сервисный канал провайдера без конфликтов идентификаторов.
Сценарии применения
- Транспорт VLAN между площадками через канал провайдера, не поддерживающий 802.1Q-транки
- Изоляция клиентских VLAN в мультитенантных средах
- Расширение пространства VLAN за пределы 4094 идентификаторов
Настройка QinQ
Перейдите в Interfaces > Assignments на вкладку QinQ и нажмите Add:
- Parent Interface - физический интерфейс для QinQ-трафика
- First level tag - идентификатор внешнего (сервисного) VLAN
- Member VLANs - идентификаторы внутренних VLAN (можно указывать диапазоны, например 100-150)
Автоматическая группа интерфейсов QinQ создаётся системой для упрощения управления правилами файрвола при большом количестве тегов. Эту группу нельзя редактировать вручную.
Беспроводные интерфейсы
pfSense поддерживает беспроводные интерфейсы при наличии совместимого Wi-Fi адаптера. Беспроводной интерфейс создаётся в Interfaces > Assignments > Wireless и может работать в режимах Access Point (hostap) или Infrastructure (BSS/клиент). После назначения беспроводной интерфейс настраивается аналогично проводному: IP-адрес, DHCP, правила файрвола.
Для изоляции беспроводных клиентов рекомендуется размещать беспроводной интерфейс в отдельном VLAN или использовать мостовое соединение с фильтрацией. Для авторизации гостевых пользователей подключите Captive Portal к интерфейсу беспроводной сети.
Группы интерфейсов
Группы интерфейсов (Interface Groups) объединяют несколько интерфейсов под одним именем для применения общих правил файрвола. Вместо создания идентичных правил на каждом интерфейсе, правило создаётся на группе и применяется ко всем её участникам.
Для создания группы перейдите в Interfaces > Assignments > Interface Groups, нажмите Add, укажите имя группы и выберите участников. После создания группа появляется как отдельная вкладка в Firewall > Rules.
Правила группы обрабатываются перед правилами отдельных интерфейсов. Это важно учитывать при планировании политики безопасности - правило группы может перехватить трафик до того, как он достигнет правил конкретного интерфейса.
Назначение и конфигурация интерфейсов
Все типы виртуальных интерфейсов (PPPoE, GRE, GIF, LAGG, QinQ) после создания необходимо назначить через Interfaces > Assignments:
- В выпадающем списке Available network ports выберите созданный виртуальный интерфейс
- Нажмите Add для назначения
- Перейдите на страницу назначенного интерфейса (Interfaces > [OPTn])
- Включите интерфейс и настройте сетевые параметры
После назначения интерфейс получает системное имя (OPT1, OPT2 и т.д.), которое можно заменить на описательное в поле Description. Это имя используется в правилах файрвола, NAT и маршрутизации.
Устранение неполадок
PPPoE не подключается
- Проверьте правильность учётных данных (имя пользователя и пароль)
- Убедитесь, что физический интерфейс WAN активен и подключён к модему провайдера
- Проверьте журналы PPPoE в Status > System Logs > PPP на предмет ошибок аутентификации
- Попробуйте указать Service Name, если провайдер его требует
- При проблемах с производительностью переключите бэкенд на
if_pppoe
GRE/GIF туннель не работает
- Убедитесь, что внешние адреса обеих сторон доступны друг для друга
- Проверьте правила файрвола на WAN - протокол GRE (IP Protocol 47) или IP-in-IP (Protocol 4 для GIF) должен быть разрешён
- Проверьте, что туннельные адреса не конфликтуют с существующими подсетями
- Убедитесь, что статические маршруты указывают на правильный шлюз туннеля
LAGG не агрегирует каналы
- Проверьте, что LACP настроен на коммутаторе для соответствующих портов
- Убедитесь в совпадении скорости и дуплекса на всех участниках
- Проверьте статус LAGG в Interfaces > LAGG > [имя] - все участники должны быть в состоянии Active
- Для отладки LACP используйте Diagnostics > Command Prompt с командой
ifconfig lagg0
QinQ-трафик не проходит
- Убедитесь, что промежуточное оборудование не удаляет внешний тег
- Проверьте, что родительский интерфейс передаёт кадры с увеличенным MTU (стандартный Ethernet MTU 1500 + 4 байта на каждый тег)
- Убедитесь, что коммутаторы на пути поддерживают jumbo frames или увеличенный размер кадра