Сетевые рецепты pfSense - VLAN, прокси, IPv6
В этом разделе собраны сетевые рецепты конфигурации pfSense: изоляция сегментов через VLAN, развертывание прокси-серверов, настройка DNS-фильтрации, зеркалирование трафика для систем обнаружения вторжений, конфигурация IPv6 и агрегация каналов.
Перед выполнением рецептов создайте резервную копию: Diagnostics - Backup & Restore. Базовые сведения о сетевых интерфейсах описаны в разделе интерфейсы pfSense .
Мультитенантная изоляция сети через VLAN
VLAN позволяют разделить физическую сеть на изолированные логические сегменты. Это применяется в офисах с несколькими отделами, коворкингах и средах с арендаторами, которым необходим изолированный доступ к сети.
Пошаговая настройка
Убедитесь, что управляемый коммутатор поддерживает 802.1Q и настроен trunk-порт к pfSense
Перейдите в Interfaces - VLANs и создайте VLAN для каждого тенанта:
- Parent Interface - физический интерфейс, подключенный к коммутатору (например, igb1)
- VLAN Tag - уникальный идентификатор (например, 100 для Tenant A, 200 для Tenant B)
- Description - Tenant_A, Tenant_B
Перейдите в Interfaces - Assign и назначьте каждый VLAN как отдельный интерфейс
Настройте каждый интерфейс:
- IPv4 Configuration Type - Static IPv4
- IPv4 Address - уникальная подсеть (10.100.0.1/24 для Tenant A, 10.200.0.1/24 для Tenant B)
Настройте DHCP для каждого VLAN: Services - DHCP Server - выберите интерфейс тенанта
Создайте правила изоляции на каждом интерфейсе тенанта:
# Блокировка трафика между тенантами
Action: Block
Interface: Tenant_A
Source: Tenant_A net
Destination: Tenant_B net
# Разрешение доступа в интернет
Action: Pass
Interface: Tenant_A
Source: Tenant_A net
Destination: anyПовторите правила для каждого тенанта, блокируя доступ ко всем остальным сегментам
На управляемом коммутаторе настройте access-порты для каждого VLAN
Подробности настройки VLAN описаны в разделе VLAN pfSense .
Прозрачный прокси Squid с SSL-инспекцией
Squid в прозрачном режиме перехватывает HTTP/HTTPS-трафик без настройки прокси на клиентах. SSL-инспекция позволяет фильтровать зашифрованный трафик, но требует распространения корневого сертификата на клиентские устройства.
Пошаговая настройка
Установите пакет Squid: System - Package Manager - Available Packages - squid
Создайте внутренний CA для SSL-инспекции:
- Перейдите в System - Cert Manager - CAs
- Нажмите Add и создайте новый CA:
- Method - Create an internal Certificate Authority
- Common Name - Squid Proxy CA
- Key type - RSA, 2048 bit
Перейдите в Services - Squid Proxy Server - General:
- Enable Squid Proxy - включить
- Proxy Interface - LAN
- Proxy Port - 3128
- Transparent HTTP Proxy - включить
- HTTPS/SSL Interception - включить
- SSL/MITM Mode - Splice All (для минимального вмешательства) или Bump All (для полной инспекции)
- CA - выберите созданный Squid Proxy CA
- SSL Proxy Port - 3129
Перейдите в Services - Squid Proxy Server - ACLs и настройте списки доступа:
- Allowed Subnets - 192.168.1.0/24
- Blacklist - при необходимости добавьте запрещенные домены
Экспортируйте CA-сертификат и распространите на клиентские устройства:
- System - Cert Manager - CAs - экспортируйте сертификат CA
- Установите в доверенные корневые сертификаты на каждом клиенте (через GPO для Windows-домена)
Перейдите в Services - Squid Proxy Server - Real Time для мониторинга трафика
Предупреждение: SSL-инспекция является формой MITM-атаки. Необходимо уведомить пользователей и получить согласие (в корпоративной среде - через политику использования). Некоторые приложения с certificate pinning перестанут работать через прокси.
DNS Sinkhole с pfBlockerNG DNSBL
pfBlockerNG в режиме DNSBL перехватывает DNS-запросы к вредоносным и рекламным доменам, возвращая пустой ответ вместо реального IP. Аналог Pi-hole, встроенный в pfSense.
Пошаговая настройка
Установите пакет: System - Package Manager - Available Packages - pfBlockerNG-devel
Перейдите в Firewall - pfBlockerNG - General:
- Enable pfBlockerNG - включить
- Keep Settings - включить
Перейдите в Firewall - pfBlockerNG - DNSBL:
- Enable DNSBL - включить
- DNSBL Mode - Unbound python mode (рекомендуется)
- DNSBL Virtual IP - 10.10.10.1 (виртуальный IP для блокировки)
- DNSBL Listening Port - 8081
- DNSBL SSL Listening Port - 8443
Перейдите во вкладку DNSBL Feeds и добавьте списки блокировки:
| Название | URL | Категория |
|---|---|---|
| EasyList | https://easylist.to/easylist/easylist.txt | Реклама |
| Steven Black Hosts | https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts | Реклама + Вредоносные |
| Malware Domain List | https://www.malwaredomainlist.com/hostslist/hosts.txt | Вредоносные |
Для каждого фида настройте:
- Action - Unbound
- Update Frequency - Every 1 hour или Once a day
Перейдите в Firewall - pfBlockerNG - Update и нажмите Run для первоначальной загрузки списков
Убедитесь, что перенаправление DNS настроено для предотвращения обхода DNSBL клиентами
Мониторинг блокировок: Firewall - pfBlockerNG - Reports - DNSBL
Зеркалирование трафика для IDS
Зеркалирование (port mirroring/SPAN) копирует трафик с одного интерфейса на другой для анализа системами обнаружения вторжений (Suricata, Snort) без влияния на производительность основного трафика.
Пошаговая настройка
Подключите выделенный сетевой интерфейс к pfSense для зеркалирования (например, igb2)
Назначьте интерфейс: Interfaces - Assign - добавьте igb2 как SPAN
Включите интерфейс без IP-адреса:
- IPv4 Configuration Type - None
- IPv6 Configuration Type - None
Настройте зеркалирование через оболочку pfSense (SSH или консоль):
ifconfig igb2 promisc up- Для постоянной конфигурации добавьте в System - Advanced - System Tunables или через shellcmd:
/sbin/ifconfig igb2 promisc upНастройте мост для зеркалирования:
- Перейдите в Interfaces - Bridges
- Создайте мост с параметром SPAN Port - выберите интерфейс-источник (LAN или WAN)
- SPAN Port будет копировать весь трафик на выбранный интерфейс
Альтернативно используйте управляемый коммутатор:
- Настройте SPAN/mirror session на коммутаторе
- Направьте зеркальный трафик на порт pfSense с подключенным IDS (например, Suricata)
Установите Suricata или Snort на pfSense и привяжите к интерфейсу SPAN для анализа
Дополнительные сведения о безопасности описаны в разделе рецепты безопасности .
PPPoE-сервер для провайдеров и WISP
pfSense может выступать PPPoE-сервером для предоставления интернет-доступа абонентам. Используется интернет-провайдерами и беспроводными провайдерами (WISP).
Пошаговая настройка
Перейдите в Services - PPPoE Server
Нажмите Add и настройте:
- Interface - интерфейс, обращенный к абонентам (например, LAN или выделенный OPT)
- Total User Count - максимальное количество абонентов
- User Subnet - подсеть для абонентских IP (например, 10.10.0.0/16)
- Server Address - IP pfSense в абонентской подсети (10.10.0.1)
- Remote Address Range - начальный IP для абонентов (10.10.0.2)
- DNS Servers - IP DNS-серверов для абонентов
- RADIUS - для учета и аутентификации настройте RADIUS-сервер (FreeRADIUS)
Создайте локальных пользователей PPPoE (или используйте RADIUS):
- System - User Manager - добавьте пользователей
- Или установите пакет FreeRADIUS для централизованного управления
Настройте правила файрвола на PPPoE-интерфейсе:
Action: Pass
Interface: PPPoE
Source: PPPoE_net
Destination: anyНастройте NAT для трансляции абонентских адресов в WAN
Для ограничения скорости используйте Firewall - Traffic Shaper или limiters
Маршрутизация публичных IP-подсетей
Сценарий: провайдер выделил блок публичных IP, которые необходимо направить на внутренние серверы без NAT (прямая маршрутизация).
Пошаговая настройка
Согласуйте с провайдером маршрутизацию блока IP через WAN-адрес pfSense
Перейдите в Firewall - Virtual IPs и добавьте адреса блока:
- Type - IP Alias или Other
- Interface - WAN
- Добавьте каждый IP из блока
Если серверы находятся в отдельной подсети (например, DMZ):
- Назначьте публичные IP непосредственно серверам
- На интерфейсе DMZ pfSense настройте gateway для публичной подсети
Настройте статические маршруты при необходимости: System - Routing - Static Routes
Создайте правила файрвола для разрешения входящего трафика к публичным IP серверов
Если серверы используют приватные IP, настройте NAT 1:1: Firewall - NAT - 1:1
Описание работы с NAT приведено в разделе NAT pfSense .
IPv6 Tunnel Broker (Hurricane Electric)
Hurricane Electric предоставляет бесплатные IPv6-туннели для получения IPv6-связности через IPv4-инфраструктуру. pfSense поддерживает настройку GIF-туннелей для подключения к HE.
Пошаговая настройка
Зарегистрируйтесь на tunnelbroker.net и создайте туннель:
- Укажите публичный IPv4-адрес pfSense WAN
- Запишите:
- Server IPv4 Address
- Server IPv6 Address
- Client IPv6 Address
- Routed /48 или /64 prefix
На pfSense перейдите в Interfaces - GIFs и создайте GIF-туннель:
- Parent Interface - WAN
- GIF Remote Address - Server IPv4 Address от HE
- GIF tunnel local address - Client IPv6 Address
- GIF tunnel remote address - Server IPv6 Address
- Route caching - отключить
Перейдите в Interfaces - Assign и назначьте GIF-туннель как новый интерфейс (HE_IPv6)
Настройте интерфейс:
- IPv6 Configuration Type - Static IPv6
- IPv6 Address - Client IPv6 Address /128 (уже настроено через GIF)
Перейдите в System - Routing - Gateways и добавьте шлюз IPv6:
- Interface - HE_IPv6
- Gateway - Server IPv6 Address
Настройте LAN для раздачи IPv6:
- Перейдите в Interfaces - LAN
- IPv6 Configuration Type - Static IPv6
- IPv6 Address - первый адрес из Routed /64 prefix
Включите раздачу IPv6 через Router Advertisements:
- Services - Router Advertisements - LAN
- Router Mode - Assisted или Unmanaged
- Router Priority - Normal
Перейдите в System - Routing и установите шлюз IPv6 по умолчанию
Dual-Stack IPv4+IPv6
Dual-stack обеспечивает одновременную работу IPv4 и IPv6 на всех интерфейсах. Клиенты получают адреса обоих стеков и используют предпочтительный протокол для каждого соединения.
Пошаговая настройка
Убедитесь, что провайдер предоставляет IPv6-подключение (native или через DHCPv6-PD)
Настройте WAN для получения IPv6:
- Перейдите в Interfaces - WAN
- IPv6 Configuration Type - DHCPv6
- DHCPv6 Prefix Delegation Size - выберите размер делегированного префикса (обычно /56 или /48)
- Send IPv6 prefix hint - включить
- Do not wait for a RA - включить (при необходимости)
Настройте LAN для раздачи IPv6:
- Перейдите в Interfaces - LAN
- IPv6 Configuration Type - Track Interface
- IPv6 Interface - WAN
- IPv6 Prefix ID - 0
Настройте Router Advertisements: Services - Router Advertisements - LAN
- Router Mode - Assisted (SLAAC + DHCPv6)
Настройте DHCPv6 при необходимости: Services - DHCPv6 Server & RA - LAN
Убедитесь, что правила файрвола учитывают IPv6-трафик:
- Создайте правила на LAN для IPv6 аналогично IPv4
- По умолчанию pfSense блокирует входящий IPv6-трафик на WAN
Протестируйте dual-stack: откройте test-ipv6.com с клиентского устройства
Дополнительные сведения о настройке IPv6 описаны в разделе IPv6 pfSense .
LAGG-бондинг для высокодоступных каналов
LAGG (Link Aggregation) объединяет несколько физических интерфейсов в один логический канал для увеличения пропускной способности и обеспечения отказоустойчивости.
Пошаговая настройка
Убедитесь, что коммутатор поддерживает LACP (802.3ad) и настроены соответствующие порты
Перейдите в Interfaces - LAGGs и нажмите Add:
- Parent Interfaces - выберите два или более интерфейса (например, igb0, igb1)
- LAGG Protocol:
- LACP - IEEE 802.3ad, требует поддержки на коммутаторе (рекомендуется)
- Failover - активный/пассивный, не требует поддержки на коммутаторе
- Loadbalance - балансировка нагрузки
- Roundrobin - циклический
- Description - LAGG_WAN или LAGG_LAN
Перейдите в Interfaces - Assign и назначьте LAGG как интерфейс (вместо отдельных физических)
Настройте IP-адрес на LAGG-интерфейсе
Удалите назначения с исходных физических интерфейсов (они теперь члены LAGG)
На коммутаторе настройте LACP port-channel на соответствующих портах
Проверьте состояние LAGG: Status - Interfaces или через консоль:
ifconfig lagg0- Протестируйте отказоустойчивость: отключите один кабель и убедитесь, что связность сохраняется
Важно: при использовании LACP оба конца (pfSense и коммутатор) должны быть настроены на LACP. Несогласованный протокол приведет к потере связности. В режиме Failover коммутатор не требует специальной настройки.