Рецепты сервисов pfSense - HAProxy, Squid, SNMP

В этом разделе собраны рецепты настройки сетевых сервисов в pfSense: обратный прокси HAProxy с автоматическими сертификатами, кеширующий прокси Squid, мониторинг через SNMP и NetFlow, captive portal для гостевого доступа и другие сервисные сценарии.

Перед настройкой создайте резервную копию конфигурации: Diagnostics - Backup & Restore. Общий обзор пакетов pfSense описан в разделе пакеты pfSense .

HAProxy как обратный прокси с Let’s Encrypt

HAProxy в pfSense выступает обратным прокси-сервером, принимая HTTPS-трафик на одном публичном IP и направляя его на разные внутренние веб-серверы по доменному имени. ACME-пакет автоматизирует выпуск и обновление сертификатов Let’s Encrypt.

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

  1. Установите пакеты:

    • System - Package Manager - Available Packages - haproxy-devel
    • System - Package Manager - Available Packages - acme
  2. Настройте ACME (Let’s Encrypt):

    • Перейдите в Services - ACME Certificates - Account Keys
    • Нажмите Add и создайте учетную запись Let’s Encrypt:
      • Name - LetsEncrypt
      • ACME Server - Let’s Encrypt Production
      • Нажмите Register ACME account key
  3. Создайте сертификат:

    • Перейдите в Services - ACME Certificates - Certificates
    • Нажмите Add:
      • Name - app1.example.com
      • Domain SAN list - добавьте домены (app1.example.com, app2.example.com)
      • Method - standalone HTTP (порт 8080) или DNS validation
      • Нажмите Issue/Renew
  4. Настройте HAProxy Backend (внутренние серверы):

    • Перейдите в Services - HAProxy - Backend
    • Создайте backend для каждого веб-сервера:
      • Name - app1_backend
      • Server list:
        • Name - app1_server
        • Address - 192.168.1.10
        • Port - 80
      • Health check method - HTTP
      • Health check URI - /
  5. Настройте HAProxy Frontend:

    • Перейдите в Services - HAProxy - Frontend
    • Создайте frontend:
      • Name - HTTPS_Frontend
      • External Address - WAN Address
      • Port - 443
      • SSL Offloading - включить
      • SSL Certificate - выберите сертификат ACME
      • Type - http/https (offloading)
  6. Настройте ACL для маршрутизации по домену:

    • В разделе Access Control Lists frontend:
      • Name - app1_acl
      • Expression - Host matches
      • Value - app1.example.com
    • В разделе Actions:
      • Action - Use Backend
      • Condition ACL names - app1_acl
      • Backend - app1_backend
  7. Повторите ACL и Actions для каждого домена

  8. Создайте правило файрвола на WAN:

Action: Pass
Protocol: TCP
Destination: WAN address
Destination port: 443
  1. Настройте перенаправление HTTP на HTTPS:

    • Создайте дополнительный frontend на порту 80
    • Включите HTTP Redirect на HTTPS
  2. Настройте автоматическое обновление сертификатов: ACME обновляет сертификаты автоматически через cron

Подробности управления сертификатами описаны в разделе сертификаты pfSense .

HAProxy балансировка нагрузки для веб-серверов

HAProxy распределяет входящий трафик между несколькими серверами для обеспечения масштабируемости и отказоустойчивости. Поддерживает проверку здоровья серверов и автоматическое исключение неработающих узлов.

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

  1. Установите haproxy-devel (если не установлен)

  2. Перейдите в Services - HAProxy - Backend и создайте backend:

    • Name - web_pool
    • Balance - Round Robin (или Least Connections)
    • Server list - добавьте все серверы:
NameAddressPortWeight
web1192.168.1.1080100
web2192.168.1.1180100
web3192.168.1.1280100
  • Health check method - HTTP
  • Health check URI - /health
  • Health check HTTP version - HTTP/1.1
  • Health check interval - 5000 (мс)
  1. Настройте sticky sessions (при необходимости):

    • Cookie Name - SERVERID
    • Cookie Mode - Insert
  2. Создайте frontend:

    • Name - Web_LB_Frontend
    • External Address - WAN Address
    • Port - 443
    • SSL Offloading - включить
    • Default Backend - web_pool
  3. Мониторинг HAProxy:

    • Перейдите в Services - HAProxy - Stats
    • Включите Statistics page
    • Доступ к статистике: https://pfSense_IP:stats_port/haproxy?stats
  4. Настройте правила файрвола на WAN для разрешения входящего трафика на порт 443

Squid прозрачный прокси с кешированием

Squid в режиме кеширующего прокси хранит копии часто запрашиваемого контента, сокращая использование интернет-канала и ускоряя загрузку для пользователей.

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

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

  2. Перейдите в Services - Squid Proxy Server - General:

    • Enable Squid Proxy - включить
    • Proxy Interface - LAN
    • Proxy Port - 3128
    • Transparent HTTP Proxy - включить
    • Bypass Proxy for Private Address Destination - включить
  3. Перейдите в Services - Squid Proxy Server - Local Cache:

    • Cache Replacement Policy - Heap LFUDA (рекомендуется для кеширования)
    • Hard Disk Cache Size - размер кеша в МБ (например, 10000 для 10 ГБ)
    • Hard Disk Cache System - ufs или aufs
    • Memory Cache Size - 256 или 512 МБ
    • Maximum Object Size - 256 МБ (для кеширования обновлений)
    • Maximum Object Size in RAM - 32 КБ
  4. Для кеширования обновлений Windows/Linux добавьте в Custom Options (Advanced):

refresh_pattern -i windowsupdate.com/.*\.(cab|exe|ms[i|u|f]|[ap]sf|wm[v|a]|dat|zip) 43200 80% 129600 reload-into-ims
refresh_pattern -i update.microsoft.com/.*\.(cab|exe|ms[i|u|f]|[ap]sf|wm[v|a]|dat|zip) 43200 80% 129600 reload-into-ims
refresh_pattern -i download.windowsupdate.com/.*\.(cab|exe|ms[i|u|f]|[ap]sf|wm[v|a]|dat|zip) 43200 80% 129600 reload-into-ims
  1. Перейдите в Services - Squid Proxy Server - ACLs:

    • Allowed Subnets - 192.168.1.0/24
    • Unrestricted IPs - IP-адреса, не проходящие через прокси (опционально)
  2. Мониторинг: Services - Squid Proxy Server - Real Time и установите пакет LightSquid для отчетности

SNMP мониторинг с Zabbix/LibreNMS

SNMP (Simple Network Management Protocol) позволяет системам мониторинга (Zabbix, LibreNMS, PRTG) собирать данные о состоянии pfSense: загрузка CPU, память, трафик интерфейсов, количество состояний файрвола.

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

  1. Перейдите в Services - SNMP:

    • Enable - включить
    • System Location - физическое расположение (серверная комната, стойка)
    • System Contact - контактный email
    • Community String - измените с public на уникальную строку (SNMPv2c)
    • Bind Interface - LAN (не привязывайте к WAN)
    • SNMP Modules - включите MibII, Netgraph, PF, Host Resources
  2. Для SNMPv3 (рекомендуется для безопасности):

    • Настройте через SSH на pfSense, отредактировав /usr/local/etc/snmpd.conf
    • Добавьте пользователя SNMPv3 с аутентификацией SHA и шифрованием AES
  3. Создайте правило файрвола на LAN:

Action: Pass
Protocol: UDP
Source: monitoring_server_IP
Destination: LAN address
Destination port: 161
  1. На Zabbix:

    • Добавьте хост с IP pfSense
    • Примените шаблон Template Net pfSense SNMPv2 (или SNMPv3)
    • Укажите SNMP community string
  2. На LibreNMS:

    • Добавьте устройство через web-интерфейс или CLI:
    lnms device:add pfSense_IP -c community_string
    • LibreNMS автоматически определит pfSense и применит нужные сенсоры
  3. Основные OID для мониторинга pfSense:

ПараметрOID
CPU Usage1.3.6.1.4.1.2021.11
Memory Usage1.3.6.1.4.1.2021.4
Interface Traffic1.3.6.1.2.1.2.2.1
PF States1.3.6.1.4.1.12325.1.200.1

Для расширенного мониторинга pfSense обратитесь к разделу мониторинг pfSense .

NetFlow/sFlow экспорт для анализа трафика

NetFlow экспортирует метаданные сетевых потоков (IP-адреса, порты, объемы, протоколы) в коллектор для детального анализа трафика и обнаружения аномалий.

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

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

  2. Перейдите в Services - softflowd:

    • Interface - LAN (или WAN, в зависимости от требований)
    • Host - IP-адрес NetFlow-коллектора (например, 192.168.1.100)
    • Port - порт коллектора (например, 2055)
    • Max Flows - 8192
    • NetFlow Version - 9 (или IPFIX для v10)
    • Tracking Level - Full (IP + Port + Protocol)
  3. Для мониторинга нескольких интерфейсов добавьте отдельные экземпляры softflowd

  4. Коллекторы NetFlow:

    • ntopng - установите через Package Manager на pfSense или отдельном сервере
    • Elastic Stack - используйте Logstash с input netflow
    • nfdump/nfsen - легковесное решение для хранения и анализа
  5. Создайте правило файрвола для разрешения отправки NetFlow-данных к коллектору

  6. Альтернативно для sFlow используйте пакет hsflowd:

    • Установите через pkg из консоли pfSense
    • Настройте коллектор sFlow

Captive Portal с ваучерами для гостей

Captive portal перенаправляет пользователей на страницу аутентификации перед предоставлением доступа к интернету. Система ваучеров позволяет генерировать одноразовые коды для гостей отеля, кафе или конференции.

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

  1. Подготовьте отдельный интерфейс или VLAN для гостевой сети:

    • Создайте VLAN для гостей (например, VLAN 50 - 10.50.0.0/24)
    • Настройте DHCP для гостевого интерфейса
  2. Перейдите в Services - Captive Portal:

    • Нажмите Add для создания новой зоны
    • Zone Name - Guest_WiFi
  3. Настройте параметры зоны:

    • Interfaces - гостевой интерфейс (VLAN 50)
    • Maximum Concurrent Connections - ограничение (например, 100)
    • Idle Timeout - 30 минут
    • Hard Timeout - 480 минут (8 часов)
    • Pass-through MAC - MAC-адреса устройств без аутентификации (принтеры, Smart TV)
  4. Настройте страницу аутентификации:

    • Загрузите HTML-шаблон портала в поле Portal page contents
    • Добавьте логотип и стилизацию под бренд заведения
  5. Включите ваучеры:

    • Перейдите во вкладку Vouchers
    • Enable Vouchers - включить
    • Voucher Rolls - нажмите Add для создания серии:
      • Roll Number - 1
      • Minutes per Ticket - 60 (1 час) или 1440 (24 часа)
      • Count - количество ваучеров в серии (например, 1000)
    • Нажмите Generate и экспортируйте список ваучеров в CSV
  6. Создайте правила файрвола на гостевом интерфейсе:

# Блокировка доступа к внутренней сети
Action: Block
Interface: Guest_WiFi
Source: Guest_WiFi net
Destination: LAN net

# Разрешение интернет-доступа
Action: Pass
Interface: Guest_WiFi
Source: Guest_WiFi net
Destination: any
  1. Настройте bandwidth limiter для гостей: Firewall - Traffic Shaper - Limiters
    • Ограничьте скорость на пользователя (например, 5 Mbps download / 2 Mbps upload)

Для настройки гостевой изоляции через VLAN обратитесь к разделу VLAN pfSense .

DHCP Failover с кластером высокой доступности

В конфигурации высокой доступности (HA) pfSense два узла синхронизируют DHCP-сервер для обеспечения непрерывной выдачи адресов при сбое одного из узлов.

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

  1. Убедитесь, что кластер высокой доступности pfSense настроен и работает (CARP + pfsync)

  2. На основном узле перейдите в Services - DHCP Server - LAN:

    • Enable - включить
    • Failover Peer IP - IP-адрес вторичного узла pfSense (CARP-интерфейс или выделенный sync-интерфейс)
  3. На вторичном узле:

    • Настройте аналогичный DHCP-сервер с теми же параметрами пула
    • Failover Peer IP - IP основного узла
  4. Настройте синхронизацию конфигурации:

    • На основном узле: System - High Avail. Sync
    • Включите синхронизацию DHCP Server
  5. Проверьте работу failover:

    • Выключите основной узел
    • Убедитесь, что клиенты продолжают получать IP от вторичного узла
    • Аренды DHCP сохраняются при переключении
  6. Мониторинг: Status - DHCP Leases - просмотр активных аренд на обоих узлах

Важно: при настройке DHCP failover оба узла должны использовать непересекающиеся диапазоны адресов или общий диапазон с координацией через failover protocol. pfSense использует ISC DHCP, который поддерживает native failover.

Wake-on-LAN через pfSense

Wake-on-LAN (WoL) позволяет удаленно включать компьютеры в сети, отправляя magic packet на MAC-адрес целевого устройства. pfSense предоставляет встроенный интерфейс для WoL.

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

  1. Убедитесь, что целевые компьютеры поддерживают WoL:

    • В BIOS/UEFI включите Wake-on-LAN (обычно в разделе Power Management)
    • В ОС включите поддержку WoL на сетевом адаптере:
      • Windows: Device Manager - Network Adapter - Properties - Power Management - Allow this device to wake the computer
      • Linux: ethtool -s eth0 wol g
  2. Перейдите в Services - Wake-on-LAN:

    • Interface - LAN (интерфейс, к которому подключено целевое устройство)
    • MAC Address - MAC-адрес целевого устройства
  3. Нажмите Send для отправки magic packet

  4. Для удобства сохраните устройства:

    • Заполните MAC Address и Description
    • Нажмите Save для добавления в список
    • В дальнейшем просто нажимайте Wake напротив нужного устройства
  5. Для WoL из другой подсети (через VPN или WAN):

    • Необходим directed broadcast в целевую подсеть
    • Создайте правило файрвола, разрешающее UDP-пакеты на порт 9 (или 7) к broadcast-адресу целевой подсети
    • Настройте направленный broadcast: System - Advanced - Firewall & NAT - при необходимости включите Directed Broadcast
  6. WoL через VPN:

    • Подключитесь к pfSense через VPN
    • Используйте встроенный интерфейс WoL или отправьте magic packet утилитой с VPN-клиента

Важно: WoL работает только в пределах broadcast-домена (одной подсети). Для пробуждения через маршрутизируемые сети требуется directed broadcast или специализированный relay.

Last updated on