Настройка 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/24192.168.10.1
20Серверы192.168.20.0/24192.168.20.1
30Управление192.168.30.0/24192.168.30.1
40Гостевая сеть192.168.40.0/24192.168.40.1
50IoT-устройства192.168.50.0/24192.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
DNS192.168.10.1192.168.20.18.8.8.8, 8.8.4.4
Lease time7200864003600
Domainstaff.localservers.localguest.local

Для серверного сегмента часто предпочтительна статическая адресация. В этом случае DHCP-сервер на VLAN 20 можно не активировать или настроить только для выдачи резерваций (static mappings).

Правила файрвола

По умолчанию pfSense блокирует весь входящий трафик на вновь созданных интерфейсах (OPT). Для обеспечения сетевого доступа необходимо создать правила файрвола на каждом VLAN-интерфейсе.

Базовый набор правил

Перейдите в Firewall > Rules и выберите вкладку с именем VLAN-интерфейса.

Правило разрешения доступа в интернет

Для предоставления VLAN доступа в интернет без возможности обращения к другим локальным сегментам создайте следующую последовательность правил:

  1. Блокировка доступа к RFC1918 - запрещает трафик к приватным подсетям (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), предотвращая межсегментное взаимодействие.
  2. Разрешение доступа в интернет - разрешает весь остальной трафик.

Пример настройки правила блокировки 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

ПорядокДействиеИсточникНазначениеПортОписание
1PassVLAN netVLAN address53DNS to pfSense
2BlockVLAN netRFC1918 aliasAnyBlock private networks
3PassVLAN netAnyAnyAllow 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.

Типичные паттерны межсегментного доступа

ИсточникНазначениеПортыОбоснование
STAFFSERVERS80, 443, 3389, 22Доступ к веб-сервисам и администрирование
MGMTВсе VLANAnyПолный доступ для администраторов
SERVERSSTAFF-Запрещено (серверы не инициируют подключения к рабочим станциям)
GUESTВсе VLAN-Запрещено (полная изоляция)
IOTВсе VLAN-Запрещено (полная изоляция)
IOTИнтернет443, 8883Только HTTPS и MQTT over TLS

Управляющий VLAN

Для VLAN управления (MGMT, VLAN 30) обычно разрешается полный доступ ко всем сегментам. Это позволяет администраторам обращаться к устройствам в любом VLAN. Правила на интерфейсе MGMT:

  1. 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Компания A10.100.0.0/24
101Компания B10.101.0.0/24
102Компания C10.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, что может снизить производительность при высоких объёмах межсегментного трафика.

Порядок миграции:

  1. Документируйте текущую конфигурацию SVI, ACL и маршрутов на L3-коммутаторе.
  2. Создайте соответствующие VLAN в pfSense с идентичными тегами.
  3. Назначьте интерфейсы и настройте IP-адреса шлюзов (должны совпадать с бывшими адресами SVI).
  4. Воспроизведите ACL в виде правил файрвола pfSense.
  5. Настройте DHCP-серверы для каждого VLAN с теми же параметрами.
  6. Переведите L3-коммутатор в режим L2 (no ip routing), настройте trunk к pfSense.
  7. Переключите шлюз по умолчанию для клиентов на pfSense (через DHCP или статически).

Внимание:

При использовании тех же IP-адресов шлюзов на pfSense, что и на бывшем L3-коммутаторе, клиенты не потребуют изменения настроек. Однако необходимо убедиться, что ARP-кеш клиентов обновился - при необходимости перезагрузите клиентские устройства или выполните arp -d на критичных системах.

Миграция с MikroTik

MikroTik RouterOS использует bridge с VLAN-фильтрацией для L2-сегментации и IP-адреса на VLAN-интерфейсах для маршрутизации. При миграции на pfSense:

  1. Экспортируйте конфигурацию MikroTik: /export file=backup.
  2. Перенесите VLAN ID - они должны совпадать на обеих платформах.
  3. Настройте MikroTik bridge исключительно в режиме L2 с trunk к pfSense.
  4. Перенесите IP-адреса шлюзов и firewall filter rules.
  5. Обратите внимание: MikroTik firewall chains (input/forward/output) не имеют прямого аналога в pfSense. Правила необходимо реструктурировать под per-interface модель pfSense.

Миграция с FortiGate

FortiGate использует VLAN-интерфейсы (subinterfaces), привязанные к физическим портам. Архитектурно это ближе всего к модели pfSense. При миграции:

  1. Экспортируйте конфигурацию FortiGate через execute backup config.
  2. VLAN-интерфейсы FortiGate напрямую соответствуют VLAN в pfSense.
  3. Перенесите security policies в правила файрвола pfSense, учитывая, что FortiGate использует zone-based модель, а pfSense - interface-based.
  4. FortiGate address objects соответствуют алиасам pfSense.
  5. При наличии SD-WAN на FortiGate обратитесь к разделу Multi-WAN для настройки аналогичной функциональности.

Устранение неполадок

VLAN не пропускает трафик

Симптом: клиенты в VLAN не получают IP-адрес по DHCP или не имеют сетевого доступа.

Диагностика:

  1. Проверьте статус интерфейса в Status > Interfaces - VLAN-интерфейс должен быть в состоянии UP с назначенным IP-адресом.
  2. Убедитесь, что интерфейс активирован (Enable checkbox) в настройках интерфейса.
  3. Проверьте конфигурацию trunk-порта на коммутаторе - VLAN ID должен быть в списке разрешённых.
  4. Выполните захват пакетов в Diagnostics > Packet Capture на VLAN-интерфейсе для проверки поступления тегированного трафика.
  5. Проверьте наличие правил файрвола на VLAN-интерфейсе - по умолчанию весь трафик блокируется.

Двойное тегирование (Double Tagging)

Симптом: трафик VLAN не достигает pfSense или направляется в неправильный сегмент.

Причина: несовпадение native VLAN на trunk-порту коммутатора и parent-интерфейсе pfSense. Если native VLAN коммутатора совпадает с одним из рабочих VLAN, кадры этого VLAN передаются без тега. pfSense получает нетегированный кадр и обрабатывает его на parent-интерфейсе вместо VLAN-интерфейса.

Решение:

  1. Установите native VLAN на trunk-порту коммутатора в неиспользуемый VLAN (например, 999).
  2. Убедитесь, что parent-интерфейс pfSense не используется для пользовательского трафика.
  3. На Cisco: switchport trunk native vlan 999.
  4. На HP/Aruba: удалите trunk-порт из untagged members VLAN 1.

Проблемы с MTU

Симптом: соединения устанавливаются, но крупные пакеты теряются. Веб-страницы загружаются частично или TCP-соединения зависают при передаче данных.

Причина: добавление 802.1Q-тега увеличивает размер Ethernet-кадра на 4 байта (с 1518 до 1522 байт). Некоторые сетевые адаптеры (особенно на базе Realtek rl(4)) не поддерживают jumbo/long frames и отбрасывают кадры размером более 1518 байт.

Решение:

  1. Уменьшите MTU на VLAN-интерфейсе pfSense до 1496 байт (1500 - 4 байта тег). Настройка выполняется в Interfaces > [VLAN interface] > MTU.
  2. Альтернативно замените сетевой адаптер на модель с поддержкой аппаратного VLAN-тегирования (Intel igb, ixgbe).
  3. Проверьте MTU на промежуточных устройствах - все звенья цепочки должны поддерживать увеличенный размер кадра.

DHCP не выдаёт адреса в VLAN

Симптом: клиенты в VLAN получают адрес из диапазона 169.254.x.x (APIPA).

Диагностика:

  1. Убедитесь, что DHCP-сервер активирован на VLAN-интерфейсе в Services > DHCP Server.
  2. Проверьте, что диапазон выдаваемых адресов находится в той же подсети, что и интерфейс pfSense.
  3. Убедитесь, что правила файрвола не блокируют DHCP-трафик (UDP 67/68). При наличии правила anti-lockout оно автоматически пропускает DHCP - но только на интерфейсе с активным anti-lockout.
  4. Проверьте журнал DHCP в Status > System Logs > DHCP на наличие ошибок.

Асимметричная маршрутизация

Симптом: трафик между VLAN работает в одном направлении, но не в обратном. Или соединения устанавливаются, но данные не передаются.

Причина: в сети присутствует альтернативный маршрут (например, старый L3-коммутатор), и ответный трафик идёт по другому пути, минуя pfSense. Stateful firewall pfSense отбрасывает пакеты, не соответствующие известному состоянию соединения.

Решение:

  1. Убедитесь, что pfSense является единственным шлюзом для всех VLAN.
  2. Отключите маршрутизацию на L3-коммутаторах, если они более не выполняют эту функцию.
  3. В качестве временной меры можно включить опцию System > Advanced > Firewall & NAT > Bypass firewall rules for traffic on the same interface, но это снижает безопасность.

Связанные разделы

  • Правила файрвола - создание и управление правилами фильтрации для контроля трафика между VLAN
  • Алиасы - группировка подсетей и портов для упрощения правил межсегментного доступа
  • Статические маршруты - настройка маршрутизации при наличии дополнительных подсетей за VLAN-интерфейсами
Last updated on