Настройка VLAN в pfSense - создание и управление 802.1Q
Сегментация сети с помощью VLAN позволяет логически разделить физическую инфраструктуру на изолированные зоны без приобретения дополнительного оборудования. pfSense выступает в роли маршрутизатора между VLAN (router-on-a-stick), принимая тегированный трафик от коммутатора через единственный физический порт и обеспечивая маршрутизацию между сегментами с контролем доступа на уровне файрвола. Типичные сценарии применения включают разделение корпоративной сети на сегменты сотрудников, гостевой Wi-Fi, серверную ферму, IoT-устройства и выделенный контур управления.
Терминология
Перед началом настройки необходимо уточнить ключевые термины, используемые при работе с VLAN.
VLAN ID (тег)
Числовой идентификатор виртуальной сети в диапазоне от 1 до 4094. VLAN 1 обычно зарезервирован как native VLAN по умолчанию на большинстве коммутаторов. VLAN 0 и 4095 зарезервированы стандартом и не используются для пользовательского трафика. На практике рекомендуется присваивать идентификаторы с логической группировкой: например, 10-19 для пользовательских сегментов, 20-29 для серверных, 30-39 для управления, 100+ для гостевых и IoT.
Trunk-порт
Порт коммутатора, сконфигурированный для передачи тегированного трафика нескольких VLAN одновременно. Каждый Ethernet-кадр, проходящий через trunk, содержит 802.1Q-тег с идентификатором VLAN. Trunk-порт используется для соединения коммутатора с pfSense, а также для каскадных соединений между коммутаторами.
Access-порт
Порт коммутатора, назначенный в один конкретный VLAN. Трафик на access-порту передаётся без тегов - конечное устройство не знает о существовании VLAN. Коммутатор добавляет тег при приёме кадра от устройства и снимает тег при отправке кадра на устройство.
Native VLAN
VLAN, трафик которого передаётся через trunk-порт без тегирования. По умолчанию native VLAN имеет идентификатор 1 на большинстве платформ. Несовпадение native VLAN на двух сторонах trunk-соединения приводит к утечке трафика между VLAN и является серьёзной уязвимостью (VLAN hopping). Рекомендуется изменить native VLAN на неиспользуемый идентификатор или включить тегирование native VLAN на коммутаторе.
802.1Q-тег
Четырёхбайтовое поле, вставляемое в заголовок Ethernet-кадра после MAC-адреса источника. Содержит TPID (Tag Protocol Identifier, 0x8100 для стандартного C-Tag), приоритет 802.1p (3 бита, значения 0-7), флаг DEI (Drop Eligible Indicator) и собственно VLAN ID (12 бит). Добавление тега увеличивает максимальный размер кадра с 1518 до 1522 байт, что необходимо учитывать при настройке MTU.
Подготовка коммутатора
Корректная работа VLAN в pfSense требует предварительной настройки коммутатора. Порт, соединяющий коммутатор с pfSense, необходимо настроить как trunk, разрешающий прохождение всех требуемых VLAN. Порты конечных устройств настраиваются как access-порты с назначением в соответствующий VLAN.
Планирование VLAN
Перед настройкой следует составить план адресации и распределения VLAN.
| VLAN ID | Назначение | Подсеть | Шлюз (pfSense) |
|---|---|---|---|
| 10 | Сотрудники | 192.168.10.0/24 | 192.168.10.1 |
| 20 | Серверы | 192.168.20.0/24 | 192.168.20.1 |
| 30 | Управление | 192.168.30.0/24 | 192.168.30.1 |
| 40 | Гостевая сеть | 192.168.40.0/24 | 192.168.40.1 |
| 50 | IoT-устройства | 192.168.50.0/24 | 192.168.50.1 |
Cisco IOS
! Настройка trunk-порта к pfSense
interface GigabitEthernet0/1
description Trunk to pfSense
switchport mode trunk
switchport trunk encapsulation dot1q
switchport trunk allowed vlan 10,20,30,40,50
switchport trunk native vlan 999
spanning-tree portfast trunk
no shutdown
! Access-порт для рабочей станции в VLAN 10
interface GigabitEthernet0/2
description Workstation - Staff VLAN
switchport mode access
switchport access vlan 10
spanning-tree portfast
no shutdown
! Access-порт для сервера в VLAN 20
interface GigabitEthernet0/10
description Server - Server VLAN
switchport mode access
switchport access vlan 20
spanning-tree portfast
no shutdownКоманда switchport trunk encapsulation dot1q требуется на платформах, поддерживающих несколько протоколов инкапсуляции (ISL и 802.1Q). На современных коммутаторах Catalyst с единственной поддержкой 802.1Q эта команда может отсутствовать.
HP/Aruba ProCurve
# Создание VLAN
vlan 10
name "Staff"
untagged 2-9
tagged 1
exit
vlan 20
name "Servers"
untagged 10-16
tagged 1
exit
vlan 30
name "Management"
tagged 1
exit
vlan 40
name "Guest"
tagged 1
exit
vlan 50
name "IoT"
tagged 1
exit
# Порт 1 - trunk к pfSense (tagged для всех VLAN)
# Порты 2-9 - access для сотрудников (untagged VLAN 10)
# Порты 10-16 - access для серверов (untagged VLAN 20)В терминологии HP/Aruba tagged соответствует trunk (тегированные кадры), а untagged - access (нетегированные кадры). Порт может одновременно быть tagged в нескольких VLAN и untagged в одном.
MikroTik RouterOS
# Создание bridge
/interface bridge add name=bridge1
# Добавление физических портов в bridge
/interface bridge port add bridge=bridge1 interface=ether2
/interface bridge port add bridge=bridge1 interface=ether3
/interface bridge port add bridge=bridge1 interface=ether4
# Включение VLAN-фильтрации на bridge
/interface bridge set bridge1 vlan-filtering=yes
# Настройка trunk-порта к pfSense (ether1)
/interface bridge port add bridge=bridge1 interface=ether1
# Определение VLAN на bridge
/interface bridge vlan
add bridge=bridge1 tagged=ether1 untagged=ether2,ether3 vlan-ids=10
add bridge=bridge1 tagged=ether1 untagged=ether4 vlan-ids=20
add bridge=bridge1 tagged=ether1 vlan-ids=30
add bridge=bridge1 tagged=ether1 vlan-ids=40
add bridge=bridge1 tagged=ether1 vlan-ids=50
# Назначение PVID на access-портах
/interface bridge port
set [find interface=ether2] pvid=10
set [find interface=ether3] pvid=10
set [find interface=ether4] pvid=20Внимание:
Включение
vlan-filtering=yesна bridge в MikroTik RouterOS может привести к потере удалённого доступа к устройству, если management-интерфейс не настроен корректно. Рекомендуется выполнять эту операцию при наличии физического доступа к консоли или через Safe Mode.
Создание VLAN в pfSense
После подготовки коммутатора необходимо создать VLAN-интерфейсы в pfSense.
Шаг 1. Переход к настройке VLAN
Откройте веб-интерфейс pfSense и перейдите в раздел Interfaces > Assignments. Выберите вкладку VLANs.
Шаг 2. Создание VLAN
Нажмите кнопку Add для создания нового VLAN. Заполните следующие поля:
- Parent Interface - физический интерфейс, через который подключён trunk-порт коммутатора. Обычно это выделенный интерфейс LAN или дополнительный сетевой адаптер (например,
igb1,em1,ix0). Не рекомендуется использовать WAN-интерфейс в качестве parent для VLAN. - VLAN Tag - числовой идентификатор VLAN (1-4094), соответствующий настройкам коммутатора.
- VLAN Priority - приоритет 802.1p (0-7, необязательное поле). Значение 0 используется по умолчанию (best effort). Более высокие значения применяются для приоритизации голосового трафика (обычно 5-6) или сетевого управления (7).
- Description - описание VLAN для удобства идентификации (например, “Staff Network”, “Guest WiFi”, “Server Farm”).
Нажмите Save для сохранения.
Шаг 3. Повторение для каждого VLAN
Повторите процедуру создания для всех запланированных VLAN. После завершения на вкладке VLANs должен отображаться полный список созданных виртуальных сетей с указанием parent-интерфейса и тега.
Внимание:
Все VLAN, использующие один физический порт, должны ссылаться на один и тот же parent interface. Создание VLAN с одинаковым тегом на разных parent-интерфейсах допустимо, но приводит к созданию двух независимых сегментов.
Назначение интерфейса
После создания VLAN-интерфейсы необходимо назначить как логические интерфейсы pfSense и сконфигурировать IP-адресацию.
Шаг 1. Добавление интерфейса
Перейдите в Interfaces > Assignments на вкладку Interface Assignments. В выпадающем списке Available network ports выберите созданный VLAN (отображается в формате VLAN 10 on igb1 - Staff Network) и нажмите Add.
Новый интерфейс появится в списке как OPTn (например, OPT1, OPT2). Повторите для каждого VLAN.
Шаг 2. Конфигурация интерфейса
Нажмите на имя назначенного интерфейса (например, OPT1) для перехода к его настройкам. Выполните следующую конфигурацию:
- Enable - установите флажок для активации интерфейса.
- Description - задайте информативное имя (например, STAFF, SERVERS, GUEST). Это имя будет отображаться в правилах файрвола и навигации интерфейса.
- IPv4 Configuration Type - выберите Static IPv4.
- IPv4 Address - укажите адрес шлюза для данного VLAN (например, 192.168.10.1) с маской подсети (/24).
- IPv6 Configuration Type - настройте при необходимости или оставьте None.
Нажмите Save, затем Apply Changes.
Шаг 3. Переименование интерфейсов
Рекомендуется присвоить интерфейсам осмысленные имена вместо стандартных OPTn. Имена интерфейсов в pfSense ограничены буквами, цифрами и подчёркиванием, без пробелов. Допустимые примеры: STAFF, SERVERS, GUEST_WIFI, IOT, MGMT.
DHCP для VLAN
Каждый VLAN-интерфейс может обслуживать собственный DHCP-сервер с индивидуальным пулом адресов и параметрами.
Настройка DHCP-сервера
Перейдите в Services > DHCP Server и выберите вкладку с именем VLAN-интерфейса (например, STAFF).
Основные параметры конфигурации:
- Enable - активировать DHCP-сервер на данном интерфейсе.
- Range - диапазон выдаваемых адресов. Рекомендуется оставить начало диапазона подсети для статических назначений. Например, для подсети 192.168.10.0/24 установите диапазон 192.168.10.100 - 192.168.10.250.
- DNS Servers - DNS-серверы для клиентов. Можно указать адрес pfSense (192.168.10.1 при использовании встроенного DNS Resolver) или внешние серверы.
- Gateway - шлюз по умолчанию. Автоматически устанавливается в адрес интерфейса pfSense.
- Domain Name - доменное имя для клиентов (например,
staff.local). - Lease Time - время аренды адреса в секундах. По умолчанию 7200 (2 часа). Для гостевых сетей рекомендуется уменьшить до 3600 (1 час), для серверных - увеличить до 86400 (24 часа).
Пример конфигурации DHCP для нескольких VLAN
| Параметр | STAFF (VLAN 10) | SERVERS (VLAN 20) | GUEST (VLAN 40) |
|---|---|---|---|
| Диапазон | .100 - .250 | .100 - .200 | .10 - .250 |
| DNS | 192.168.10.1 | 192.168.20.1 | 8.8.8.8, 8.8.4.4 |
| Lease time | 7200 | 86400 | 3600 |
| Domain | staff.local | servers.local | guest.local |
Для серверного сегмента часто предпочтительна статическая адресация. В этом случае DHCP-сервер на VLAN 20 можно не активировать или настроить только для выдачи резерваций (static mappings).
Правила файрвола
По умолчанию pfSense блокирует весь входящий трафик на вновь созданных интерфейсах (OPT). Для обеспечения сетевого доступа необходимо создать правила файрвола на каждом VLAN-интерфейсе.
Базовый набор правил
Перейдите в Firewall > Rules и выберите вкладку с именем VLAN-интерфейса.
Правило разрешения доступа в интернет
Для предоставления VLAN доступа в интернет без возможности обращения к другим локальным сегментам создайте следующую последовательность правил:
- Блокировка доступа к RFC1918 - запрещает трафик к приватным подсетям (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), предотвращая межсегментное взаимодействие.
- Разрешение доступа в интернет - разрешает весь остальной трафик.
Пример настройки правила блокировки RFC1918:
- Action: Block
- Interface: GUEST (или имя VLAN-интерфейса)
- Address Family: IPv4
- Protocol: Any
- Source: GUEST net
- Destination: выберите Network и создайте алиас RFC1918 со значениями 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
- Description: Block access to private networks
Пример настройки правила разрешения интернета:
- Action: Pass
- Interface: GUEST
- Protocol: Any
- Source: GUEST net
- Destination: Any
- Description: Allow internet access
Внимание:
Порядок правил критически важен. Правило блокировки RFC1918 должно располагаться выше правила разрешения доступа в интернет. pfSense обрабатывает правила сверху вниз по принципу first match wins - первое совпавшее правило определяет судьбу пакета.
Правила для DNS
При блокировке межсегментного трафика необходимо явно разрешить DNS-запросы к pfSense, если он используется как DNS-сервер для VLAN:
- Action: Pass
- Interface: GUEST
- Protocol: TCP/UDP
- Source: GUEST net
- Destination: GUEST address (адрес pfSense на данном интерфейсе)
- Destination Port: 53
- Description: Allow DNS to pfSense
Это правило необходимо разместить выше правила блокировки RFC1918.
Рекомендуемый порядок правил для изолированного VLAN
| Порядок | Действие | Источник | Назначение | Порт | Описание |
|---|---|---|---|---|---|
| 1 | Pass | VLAN net | VLAN address | 53 | DNS to pfSense |
| 2 | Block | VLAN net | RFC1918 alias | Any | Block private networks |
| 3 | Pass | VLAN net | Any | Any | Allow internet |
Inter-VLAN routing
По умолчанию при наличии правил, разрешающих межсегментный трафик, pfSense маршрутизирует пакеты между VLAN через свои интерфейсы. Контроль доступа между VLAN осуществляется исключительно правилами файрвола - отдельная настройка маршрутизации не требуется, поскольку pfSense является directly connected шлюзом для каждого VLAN.
Разрешение определённого трафика между VLAN
Для предоставления доступа из VLAN сотрудников (VLAN 10) к серверам (VLAN 20) создайте правило на интерфейсе STAFF:
- Action: Pass
- Interface: STAFF
- Protocol: TCP
- Source: STAFF net
- Destination: SERVERS net
- Destination Port: выберите необходимые порты (например, 80, 443, 3389, 22)
- Description: Allow staff access to servers
Это правило необходимо разместить выше правила блокировки RFC1918 на интерфейсе STAFF.
Типичные паттерны межсегментного доступа
| Источник | Назначение | Порты | Обоснование |
|---|---|---|---|
| STAFF | SERVERS | 80, 443, 3389, 22 | Доступ к веб-сервисам и администрирование |
| MGMT | Все VLAN | Any | Полный доступ для администраторов |
| SERVERS | STAFF | - | Запрещено (серверы не инициируют подключения к рабочим станциям) |
| GUEST | Все VLAN | - | Запрещено (полная изоляция) |
| IOT | Все VLAN | - | Запрещено (полная изоляция) |
| IOT | Интернет | 443, 8883 | Только HTTPS и MQTT over TLS |
Управляющий VLAN
Для VLAN управления (MGMT, VLAN 30) обычно разрешается полный доступ ко всем сегментам. Это позволяет администраторам обращаться к устройствам в любом VLAN. Правила на интерфейсе MGMT:
- Pass - MGMT net -> Any -> Any (полный доступ)
При этом доступ из других VLAN в MGMT должен быть заблокирован. На каждом другом интерфейсе добавьте правило:
- Block - VLAN net -> MGMT net -> Any (запрет доступа к управляющему сегменту)
Типичные сценарии
Офисная сегментация
Наиболее распространённый сценарий - разделение корпоративной сети на функциональные зоны.
┌─────────────┐
│ Интернет │
└──────┬──────┘
│ WAN
┌──────┴──────┐
│ pfSense │
└──────┬──────┘
│ Trunk (802.1Q)
┌──────┴──────┐
│ Коммутатор │
└──┬──┬──┬──┬─┘
│ │ │ │
VLAN 10 │ │ │ │ VLAN 50
Сотрудн. │ │ │ │ IoT
VLAN 20│ │ VLAN 40
Серверы │ │ Гости
VLAN 30
Управл.Правила доступа:
- Сотрудники получают доступ к серверам и интернету
- Серверы имеют доступ в интернет для обновлений
- Гостевая сеть - только интернет, полная изоляция от корпоративных ресурсов
- IoT-устройства - ограниченный доступ в интернет (только HTTPS/MQTT)
- Управление - полный доступ ко всем сегментам
Мультитенантная среда
В сценарии с несколькими арендаторами (например, коворкинг, бизнес-центр) каждому арендатору выделяется собственный VLAN с полной изоляцией:
| VLAN ID | Арендатор | Подсеть |
|---|---|---|
| 100 | Компания A | 10.100.0.0/24 |
| 101 | Компания B | 10.101.0.0/24 |
| 102 | Компания C | 10.102.0.0/24 |
| 200 | Общие ресурсы | 10.200.0.0/24 |
Каждый VLAN арендатора получает полную изоляцию от остальных. Доступ к общим ресурсам (принтеры, конференц-оборудование) контролируется правилами файрвола с разрешением только необходимых протоколов.
Миграция с других платформ
Миграция с Cisco L3-коммутатора
При переносе inter-VLAN routing с Cisco L3-коммутатора на pfSense необходимо учитывать архитектурные различия. На L3-коммутаторе маршрутизация выполняется аппаратно между SVI (Switch Virtual Interfaces) на скорости линии. При переносе на pfSense маршрутизация становится программной через router-on-a-stick, что может снизить производительность при высоких объёмах межсегментного трафика.
Порядок миграции:
- Документируйте текущую конфигурацию SVI, ACL и маршрутов на L3-коммутаторе.
- Создайте соответствующие VLAN в pfSense с идентичными тегами.
- Назначьте интерфейсы и настройте IP-адреса шлюзов (должны совпадать с бывшими адресами SVI).
- Воспроизведите ACL в виде правил файрвола pfSense.
- Настройте DHCP-серверы для каждого VLAN с теми же параметрами.
- Переведите L3-коммутатор в режим L2 (
no ip routing), настройте trunk к pfSense. - Переключите шлюз по умолчанию для клиентов на pfSense (через DHCP или статически).
Внимание:
При использовании тех же IP-адресов шлюзов на pfSense, что и на бывшем L3-коммутаторе, клиенты не потребуют изменения настроек. Однако необходимо убедиться, что ARP-кеш клиентов обновился - при необходимости перезагрузите клиентские устройства или выполните
arp -dна критичных системах.
Миграция с MikroTik
MikroTik RouterOS использует bridge с VLAN-фильтрацией для L2-сегментации и IP-адреса на VLAN-интерфейсах для маршрутизации. При миграции на pfSense:
- Экспортируйте конфигурацию MikroTik:
/export file=backup. - Перенесите VLAN ID - они должны совпадать на обеих платформах.
- Настройте MikroTik bridge исключительно в режиме L2 с trunk к pfSense.
- Перенесите IP-адреса шлюзов и firewall filter rules.
- Обратите внимание: MikroTik firewall chains (input/forward/output) не имеют прямого аналога в pfSense. Правила необходимо реструктурировать под per-interface модель pfSense.
Миграция с FortiGate
FortiGate использует VLAN-интерфейсы (subinterfaces), привязанные к физическим портам. Архитектурно это ближе всего к модели pfSense. При миграции:
- Экспортируйте конфигурацию FortiGate через
execute backup config. - VLAN-интерфейсы FortiGate напрямую соответствуют VLAN в pfSense.
- Перенесите security policies в правила файрвола pfSense, учитывая, что FortiGate использует zone-based модель, а pfSense - interface-based.
- FortiGate address objects соответствуют алиасам pfSense.
- При наличии SD-WAN на FortiGate обратитесь к разделу Multi-WAN для настройки аналогичной функциональности.
Устранение неполадок
VLAN не пропускает трафик
Симптом: клиенты в VLAN не получают IP-адрес по DHCP или не имеют сетевого доступа.
Диагностика:
- Проверьте статус интерфейса в Status > Interfaces - VLAN-интерфейс должен быть в состоянии UP с назначенным IP-адресом.
- Убедитесь, что интерфейс активирован (Enable checkbox) в настройках интерфейса.
- Проверьте конфигурацию trunk-порта на коммутаторе - VLAN ID должен быть в списке разрешённых.
- Выполните захват пакетов в Diagnostics > Packet Capture на VLAN-интерфейсе для проверки поступления тегированного трафика.
- Проверьте наличие правил файрвола на VLAN-интерфейсе - по умолчанию весь трафик блокируется.
Двойное тегирование (Double Tagging)
Симптом: трафик VLAN не достигает pfSense или направляется в неправильный сегмент.
Причина: несовпадение native VLAN на trunk-порту коммутатора и parent-интерфейсе pfSense. Если native VLAN коммутатора совпадает с одним из рабочих VLAN, кадры этого VLAN передаются без тега. pfSense получает нетегированный кадр и обрабатывает его на parent-интерфейсе вместо VLAN-интерфейса.
Решение:
- Установите native VLAN на trunk-порту коммутатора в неиспользуемый VLAN (например, 999).
- Убедитесь, что parent-интерфейс pfSense не используется для пользовательского трафика.
- На Cisco:
switchport trunk native vlan 999. - На HP/Aruba: удалите trunk-порт из untagged members VLAN 1.
Проблемы с MTU
Симптом: соединения устанавливаются, но крупные пакеты теряются. Веб-страницы загружаются частично или TCP-соединения зависают при передаче данных.
Причина: добавление 802.1Q-тега увеличивает размер Ethernet-кадра на 4 байта (с 1518 до 1522 байт). Некоторые сетевые адаптеры (особенно на базе Realtek rl(4)) не поддерживают jumbo/long frames и отбрасывают кадры размером более 1518 байт.
Решение:
- Уменьшите MTU на VLAN-интерфейсе pfSense до 1496 байт (1500 - 4 байта тег). Настройка выполняется в Interfaces > [VLAN interface] > MTU.
- Альтернативно замените сетевой адаптер на модель с поддержкой аппаратного VLAN-тегирования (Intel igb, ixgbe).
- Проверьте MTU на промежуточных устройствах - все звенья цепочки должны поддерживать увеличенный размер кадра.
DHCP не выдаёт адреса в VLAN
Симптом: клиенты в VLAN получают адрес из диапазона 169.254.x.x (APIPA).
Диагностика:
- Убедитесь, что DHCP-сервер активирован на VLAN-интерфейсе в Services > DHCP Server.
- Проверьте, что диапазон выдаваемых адресов находится в той же подсети, что и интерфейс pfSense.
- Убедитесь, что правила файрвола не блокируют DHCP-трафик (UDP 67/68). При наличии правила anti-lockout оно автоматически пропускает DHCP - но только на интерфейсе с активным anti-lockout.
- Проверьте журнал DHCP в Status > System Logs > DHCP на наличие ошибок.
Асимметричная маршрутизация
Симптом: трафик между VLAN работает в одном направлении, но не в обратном. Или соединения устанавливаются, но данные не передаются.
Причина: в сети присутствует альтернативный маршрут (например, старый L3-коммутатор), и ответный трафик идёт по другому пути, минуя pfSense. Stateful firewall pfSense отбрасывает пакеты, не соответствующие известному состоянию соединения.
Решение:
- Убедитесь, что pfSense является единственным шлюзом для всех VLAN.
- Отключите маршрутизацию на L3-коммутаторах, если они более не выполняют эту функцию.
- В качестве временной меры можно включить опцию System > Advanced > Firewall & NAT > Bypass firewall rules for traffic on the same interface, но это снижает безопасность.
Связанные разделы
- Правила файрвола - создание и управление правилами фильтрации для контроля трафика между VLAN
- Алиасы - группировка подсетей и портов для упрощения правил межсегментного доступа
- Статические маршруты - настройка маршрутизации при наличии дополнительных подсетей за VLAN-интерфейсами