# Типы интерфейсов pfSense - PPPoE, GRE, GIF, LAGG, QinQ

> Настройка различных типов интерфейсов pfSense - PPPoE подключение, GRE и GIF туннели, агрегация каналов LAGG (LACP), QinQ и группы интерфейсов

Source: https://opennix.org/docs/pfsense/interfaces/pfsense-interface-types/


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-туннеля в качестве шлюза. Не забудьте создать правила [файрвола](/docs/pfsense/firewall/pfsense-firewall-rules/) на 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:

1. Зарегистрируйтесь на tunnelbroker.net и создайте туннель
2. Создайте GIF-интерфейс с параметрами, предоставленными брокером
3. Назначьте GIF-интерфейс и настройте IPv6-адрес
4. Добавьте маршрут по умолчанию для IPv6 через шлюз туннеля

## LAGG (Link Aggregation)

LAGG объединяет несколько физических сетевых интерфейсов в один логический канал. В зависимости от выбранного протокола LAGG обеспечивает увеличение пропускной способности, отказоустойчивость или комбинацию обоих преимуществ.

### Поддерживаемые протоколы

| Протокол | Описание | Требует настройки коммутатора |
|---|---|---|
| LACP | IEEE 802.3ad, согласование с коммутатором, отказоустойчивость и балансировка | Да |
| Failover | Весь трафик через основной интерфейс, резервный активируется при отказе | Нет |
| Load Balance | Статическая балансировка исходящего трафика без мониторинга состояния | Да |
| Round Robin | Последовательная отправка через интерфейсы | Да |
| None | Отключает передачу трафика, сохраняя логический интерфейс | - |

LACP является наиболее распространённым протоколом, обеспечивающим как отказоустойчивость, так и увеличение пропускной способности. Failover не требует поддержки со стороны коммутатора и подходит для сценариев, где важна только отказоустойчивость.

### Создание LAGG

Перейдите в **Interfaces > Assignments** на вкладку **LAGGs** и нажмите **Add**:

1. Выберите интерфейсы-участники в поле **Member Interfaces** (интерфейсы не должны быть назначены в системе)
2. Выберите протокол в поле **LAGG Protocol**
3. Для LACP и Load Balance выберите алгоритм хэширования
4. Добавьте описание и нажмите **Save**

После создания назначьте LAGG-интерфейс через **Interfaces > Assignments**. LAGG-интерфейс можно использовать как носитель [VLAN](/docs/pfsense/vlans/pfsense-vlan-setup/) - создавайте 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](/docs/pfsense/vlans/pfsense-vlan-setup/) или использовать [мостовое соединение](/docs/pfsense/bridging/pfsense-bridge-setup/) с фильтрацией. Для авторизации гостевых пользователей подключите [Captive Portal](/docs/pfsense/captive-portal/pfsense-captive-portal-setup/) к интерфейсу беспроводной сети.

## Группы интерфейсов

Группы интерфейсов (Interface Groups) объединяют несколько интерфейсов под одним именем для применения общих правил файрвола. Вместо создания идентичных правил на каждом интерфейсе, правило создаётся на группе и применяется ко всем её участникам.

Для создания группы перейдите в **Interfaces > Assignments > Interface Groups**, нажмите **Add**, укажите имя группы и выберите участников. После создания группа появляется как отдельная вкладка в **Firewall > Rules**.

Правила группы обрабатываются перед правилами отдельных интерфейсов. Это важно учитывать при планировании политики безопасности - правило группы может перехватить трафик до того, как он достигнет правил конкретного интерфейса.

## Назначение и конфигурация интерфейсов

Все типы виртуальных интерфейсов (PPPoE, GRE, GIF, LAGG, QinQ) после создания необходимо назначить через **Interfaces > Assignments**:

1. В выпадающем списке **Available network ports** выберите созданный виртуальный интерфейс
2. Нажмите **Add** для назначения
3. Перейдите на страницу назначенного интерфейса (**Interfaces > [OPTn]**)
4. Включите интерфейс и настройте сетевые параметры

После назначения интерфейс получает системное имя (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 или увеличенный размер кадра

