Сетевые рецепты pfSense - VLAN, прокси, IPv6

В этом разделе собраны сетевые рецепты конфигурации pfSense: изоляция сегментов через VLAN, развертывание прокси-серверов, настройка DNS-фильтрации, зеркалирование трафика для систем обнаружения вторжений, конфигурация IPv6 и агрегация каналов.

Перед выполнением рецептов создайте резервную копию: Diagnostics - Backup & Restore. Базовые сведения о сетевых интерфейсах описаны в разделе интерфейсы pfSense .

Мультитенантная изоляция сети через VLAN

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

Пошаговая настройка

  1. Убедитесь, что управляемый коммутатор поддерживает 802.1Q и настроен trunk-порт к pfSense

  2. Перейдите в Interfaces - VLANs и создайте VLAN для каждого тенанта:

    • Parent Interface - физический интерфейс, подключенный к коммутатору (например, igb1)
    • VLAN Tag - уникальный идентификатор (например, 100 для Tenant A, 200 для Tenant B)
    • Description - Tenant_A, Tenant_B
  3. Перейдите в Interfaces - Assign и назначьте каждый VLAN как отдельный интерфейс

  4. Настройте каждый интерфейс:

    • IPv4 Configuration Type - Static IPv4
    • IPv4 Address - уникальная подсеть (10.100.0.1/24 для Tenant A, 10.200.0.1/24 для Tenant B)
  5. Настройте DHCP для каждого VLAN: Services - DHCP Server - выберите интерфейс тенанта

  6. Создайте правила изоляции на каждом интерфейсе тенанта:

# Блокировка трафика между тенантами
Action: Block
Interface: Tenant_A
Source: Tenant_A net
Destination: Tenant_B net

# Разрешение доступа в интернет
Action: Pass
Interface: Tenant_A
Source: Tenant_A net
Destination: any
  1. Повторите правила для каждого тенанта, блокируя доступ ко всем остальным сегментам

  2. На управляемом коммутаторе настройте access-порты для каждого VLAN

Подробности настройки VLAN описаны в разделе VLAN pfSense .

Прозрачный прокси Squid с SSL-инспекцией

Squid в прозрачном режиме перехватывает HTTP/HTTPS-трафик без настройки прокси на клиентах. SSL-инспекция позволяет фильтровать зашифрованный трафик, но требует распространения корневого сертификата на клиентские устройства.

Пошаговая настройка

  1. Установите пакет Squid: System - Package Manager - Available Packages - squid

  2. Создайте внутренний CA для SSL-инспекции:

    • Перейдите в System - Cert Manager - CAs
    • Нажмите Add и создайте новый CA:
      • Method - Create an internal Certificate Authority
      • Common Name - Squid Proxy CA
      • Key type - RSA, 2048 bit
  3. Перейдите в 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
  4. Перейдите в Services - Squid Proxy Server - ACLs и настройте списки доступа:

    • Allowed Subnets - 192.168.1.0/24
    • Blacklist - при необходимости добавьте запрещенные домены
  5. Экспортируйте CA-сертификат и распространите на клиентские устройства:

    • System - Cert Manager - CAs - экспортируйте сертификат CA
    • Установите в доверенные корневые сертификаты на каждом клиенте (через GPO для Windows-домена)
  6. Перейдите в Services - Squid Proxy Server - Real Time для мониторинга трафика

Предупреждение: SSL-инспекция является формой MITM-атаки. Необходимо уведомить пользователей и получить согласие (в корпоративной среде - через политику использования). Некоторые приложения с certificate pinning перестанут работать через прокси.

DNS Sinkhole с pfBlockerNG DNSBL

pfBlockerNG в режиме DNSBL перехватывает DNS-запросы к вредоносным и рекламным доменам, возвращая пустой ответ вместо реального IP. Аналог Pi-hole, встроенный в pfSense.

Пошаговая настройка

  1. Установите пакет: System - Package Manager - Available Packages - pfBlockerNG-devel

  2. Перейдите в Firewall - pfBlockerNG - General:

    • Enable pfBlockerNG - включить
    • Keep Settings - включить
  3. Перейдите в 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
  4. Перейдите во вкладку DNSBL Feeds и добавьте списки блокировки:

НазваниеURLКатегория
EasyListhttps://easylist.to/easylist/easylist.txtРеклама
Steven Black Hostshttps://raw.githubusercontent.com/StevenBlack/hosts/master/hostsРеклама + Вредоносные
Malware Domain Listhttps://www.malwaredomainlist.com/hostslist/hosts.txtВредоносные
  1. Для каждого фида настройте:

    • Action - Unbound
    • Update Frequency - Every 1 hour или Once a day
  2. Перейдите в Firewall - pfBlockerNG - Update и нажмите Run для первоначальной загрузки списков

  3. Убедитесь, что перенаправление DNS настроено для предотвращения обхода DNSBL клиентами

  4. Мониторинг блокировок: Firewall - pfBlockerNG - Reports - DNSBL

Зеркалирование трафика для IDS

Зеркалирование (port mirroring/SPAN) копирует трафик с одного интерфейса на другой для анализа системами обнаружения вторжений (Suricata, Snort) без влияния на производительность основного трафика.

Пошаговая настройка

  1. Подключите выделенный сетевой интерфейс к pfSense для зеркалирования (например, igb2)

  2. Назначьте интерфейс: Interfaces - Assign - добавьте igb2 как SPAN

  3. Включите интерфейс без IP-адреса:

    • IPv4 Configuration Type - None
    • IPv6 Configuration Type - None
  4. Настройте зеркалирование через оболочку pfSense (SSH или консоль):

ifconfig igb2 promisc up
  1. Для постоянной конфигурации добавьте в System - Advanced - System Tunables или через shellcmd:
/sbin/ifconfig igb2 promisc up
  1. Настройте мост для зеркалирования:

    • Перейдите в Interfaces - Bridges
    • Создайте мост с параметром SPAN Port - выберите интерфейс-источник (LAN или WAN)
    • SPAN Port будет копировать весь трафик на выбранный интерфейс
  2. Альтернативно используйте управляемый коммутатор:

    • Настройте SPAN/mirror session на коммутаторе
    • Направьте зеркальный трафик на порт pfSense с подключенным IDS (например, Suricata)
  3. Установите Suricata или Snort на pfSense и привяжите к интерфейсу SPAN для анализа

Дополнительные сведения о безопасности описаны в разделе рецепты безопасности .

PPPoE-сервер для провайдеров и WISP

pfSense может выступать PPPoE-сервером для предоставления интернет-доступа абонентам. Используется интернет-провайдерами и беспроводными провайдерами (WISP).

Пошаговая настройка

  1. Перейдите в Services - PPPoE Server

  2. Нажмите 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)
  3. Создайте локальных пользователей PPPoE (или используйте RADIUS):

    • System - User Manager - добавьте пользователей
    • Или установите пакет FreeRADIUS для централизованного управления
  4. Настройте правила файрвола на PPPoE-интерфейсе:

Action: Pass
Interface: PPPoE
Source: PPPoE_net
Destination: any
  1. Настройте NAT для трансляции абонентских адресов в WAN

  2. Для ограничения скорости используйте Firewall - Traffic Shaper или limiters

Маршрутизация публичных IP-подсетей

Сценарий: провайдер выделил блок публичных IP, которые необходимо направить на внутренние серверы без NAT (прямая маршрутизация).

Пошаговая настройка

  1. Согласуйте с провайдером маршрутизацию блока IP через WAN-адрес pfSense

  2. Перейдите в Firewall - Virtual IPs и добавьте адреса блока:

    • Type - IP Alias или Other
    • Interface - WAN
    • Добавьте каждый IP из блока
  3. Если серверы находятся в отдельной подсети (например, DMZ):

    • Назначьте публичные IP непосредственно серверам
    • На интерфейсе DMZ pfSense настройте gateway для публичной подсети
  4. Настройте статические маршруты при необходимости: System - Routing - Static Routes

  5. Создайте правила файрвола для разрешения входящего трафика к публичным IP серверов

  6. Если серверы используют приватные IP, настройте NAT 1:1: Firewall - NAT - 1:1

Описание работы с NAT приведено в разделе NAT pfSense .

IPv6 Tunnel Broker (Hurricane Electric)

Hurricane Electric предоставляет бесплатные IPv6-туннели для получения IPv6-связности через IPv4-инфраструктуру. pfSense поддерживает настройку GIF-туннелей для подключения к HE.

Пошаговая настройка

  1. Зарегистрируйтесь на tunnelbroker.net и создайте туннель:

    • Укажите публичный IPv4-адрес pfSense WAN
    • Запишите:
      • Server IPv4 Address
      • Server IPv6 Address
      • Client IPv6 Address
      • Routed /48 или /64 prefix
  2. На 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 - отключить
  3. Перейдите в Interfaces - Assign и назначьте GIF-туннель как новый интерфейс (HE_IPv6)

  4. Настройте интерфейс:

    • IPv6 Configuration Type - Static IPv6
    • IPv6 Address - Client IPv6 Address /128 (уже настроено через GIF)
  5. Перейдите в System - Routing - Gateways и добавьте шлюз IPv6:

    • Interface - HE_IPv6
    • Gateway - Server IPv6 Address
  6. Настройте LAN для раздачи IPv6:

    • Перейдите в Interfaces - LAN
    • IPv6 Configuration Type - Static IPv6
    • IPv6 Address - первый адрес из Routed /64 prefix
  7. Включите раздачу IPv6 через Router Advertisements:

    • Services - Router Advertisements - LAN
    • Router Mode - Assisted или Unmanaged
    • Router Priority - Normal
  8. Перейдите в System - Routing и установите шлюз IPv6 по умолчанию

Dual-Stack IPv4+IPv6

Dual-stack обеспечивает одновременную работу IPv4 и IPv6 на всех интерфейсах. Клиенты получают адреса обоих стеков и используют предпочтительный протокол для каждого соединения.

Пошаговая настройка

  1. Убедитесь, что провайдер предоставляет IPv6-подключение (native или через DHCPv6-PD)

  2. Настройте WAN для получения IPv6:

    • Перейдите в Interfaces - WAN
    • IPv6 Configuration Type - DHCPv6
    • DHCPv6 Prefix Delegation Size - выберите размер делегированного префикса (обычно /56 или /48)
    • Send IPv6 prefix hint - включить
    • Do not wait for a RA - включить (при необходимости)
  3. Настройте LAN для раздачи IPv6:

    • Перейдите в Interfaces - LAN
    • IPv6 Configuration Type - Track Interface
    • IPv6 Interface - WAN
    • IPv6 Prefix ID - 0
  4. Настройте Router Advertisements: Services - Router Advertisements - LAN

    • Router Mode - Assisted (SLAAC + DHCPv6)
  5. Настройте DHCPv6 при необходимости: Services - DHCPv6 Server & RA - LAN

  6. Убедитесь, что правила файрвола учитывают IPv6-трафик:

    • Создайте правила на LAN для IPv6 аналогично IPv4
    • По умолчанию pfSense блокирует входящий IPv6-трафик на WAN
  7. Протестируйте dual-stack: откройте test-ipv6.com с клиентского устройства

Дополнительные сведения о настройке IPv6 описаны в разделе IPv6 pfSense .

LAGG-бондинг для высокодоступных каналов

LAGG (Link Aggregation) объединяет несколько физических интерфейсов в один логический канал для увеличения пропускной способности и обеспечения отказоустойчивости.

Пошаговая настройка

  1. Убедитесь, что коммутатор поддерживает LACP (802.3ad) и настроены соответствующие порты

  2. Перейдите в Interfaces - LAGGs и нажмите Add:

    • Parent Interfaces - выберите два или более интерфейса (например, igb0, igb1)
    • LAGG Protocol:
      • LACP - IEEE 802.3ad, требует поддержки на коммутаторе (рекомендуется)
      • Failover - активный/пассивный, не требует поддержки на коммутаторе
      • Loadbalance - балансировка нагрузки
      • Roundrobin - циклический
    • Description - LAGG_WAN или LAGG_LAN
  3. Перейдите в Interfaces - Assign и назначьте LAGG как интерфейс (вместо отдельных физических)

  4. Настройте IP-адрес на LAGG-интерфейсе

  5. Удалите назначения с исходных физических интерфейсов (они теперь члены LAGG)

  6. На коммутаторе настройте LACP port-channel на соответствующих портах

  7. Проверьте состояние LAGG: Status - Interfaces или через консоль:

ifconfig lagg0
  1. Протестируйте отказоустойчивость: отключите один кабель и убедитесь, что связность сохраняется

Важно: при использовании LACP оба конца (pfSense и коммутатор) должны быть настроены на LACP. Несогласованный протокол приведет к потере связности. В режиме Failover коммутатор не требует специальной настройки.

Last updated on