Рецепты сервисов 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.
Пошаговая настройка
Установите пакеты:
- System - Package Manager - Available Packages - haproxy-devel
- System - Package Manager - Available Packages - acme
Настройте 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
Создайте сертификат:
- Перейдите в 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
Настройте 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 - /
Настройте HAProxy Frontend:
- Перейдите в Services - HAProxy - Frontend
- Создайте frontend:
- Name - HTTPS_Frontend
- External Address - WAN Address
- Port - 443
- SSL Offloading - включить
- SSL Certificate - выберите сертификат ACME
- Type - http/https (offloading)
Настройте 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
- В разделе Access Control Lists frontend:
Повторите ACL и Actions для каждого домена
Создайте правило файрвола на WAN:
Action: Pass
Protocol: TCP
Destination: WAN address
Destination port: 443Настройте перенаправление HTTP на HTTPS:
- Создайте дополнительный frontend на порту 80
- Включите HTTP Redirect на HTTPS
Настройте автоматическое обновление сертификатов: ACME обновляет сертификаты автоматически через cron
Подробности управления сертификатами описаны в разделе сертификаты pfSense .
HAProxy балансировка нагрузки для веб-серверов
HAProxy распределяет входящий трафик между несколькими серверами для обеспечения масштабируемости и отказоустойчивости. Поддерживает проверку здоровья серверов и автоматическое исключение неработающих узлов.
Пошаговая настройка
Установите haproxy-devel (если не установлен)
Перейдите в Services - HAProxy - Backend и создайте backend:
- Name - web_pool
- Balance - Round Robin (или Least Connections)
- Server list - добавьте все серверы:
| Name | Address | Port | Weight |
|---|---|---|---|
| web1 | 192.168.1.10 | 80 | 100 |
| web2 | 192.168.1.11 | 80 | 100 |
| web3 | 192.168.1.12 | 80 | 100 |
- Health check method - HTTP
- Health check URI - /health
- Health check HTTP version - HTTP/1.1
- Health check interval - 5000 (мс)
Настройте sticky sessions (при необходимости):
- Cookie Name - SERVERID
- Cookie Mode - Insert
Создайте frontend:
- Name - Web_LB_Frontend
- External Address - WAN Address
- Port - 443
- SSL Offloading - включить
- Default Backend - web_pool
Мониторинг HAProxy:
- Перейдите в Services - HAProxy - Stats
- Включите Statistics page
- Доступ к статистике: https://pfSense_IP:stats_port/haproxy?stats
Настройте правила файрвола на WAN для разрешения входящего трафика на порт 443
Squid прозрачный прокси с кешированием
Squid в режиме кеширующего прокси хранит копии часто запрашиваемого контента, сокращая использование интернет-канала и ускоряя загрузку для пользователей.
Пошаговая настройка
Установите Squid: System - Package Manager - Available Packages - squid
Перейдите в Services - Squid Proxy Server - General:
- Enable Squid Proxy - включить
- Proxy Interface - LAN
- Proxy Port - 3128
- Transparent HTTP Proxy - включить
- Bypass Proxy for Private Address Destination - включить
Перейдите в 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 КБ
Для кеширования обновлений 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Перейдите в Services - Squid Proxy Server - ACLs:
- Allowed Subnets - 192.168.1.0/24
- Unrestricted IPs - IP-адреса, не проходящие через прокси (опционально)
Мониторинг: Services - Squid Proxy Server - Real Time и установите пакет LightSquid для отчетности
SNMP мониторинг с Zabbix/LibreNMS
SNMP (Simple Network Management Protocol) позволяет системам мониторинга (Zabbix, LibreNMS, PRTG) собирать данные о состоянии pfSense: загрузка CPU, память, трафик интерфейсов, количество состояний файрвола.
Пошаговая настройка
Перейдите в Services - SNMP:
- Enable - включить
- System Location - физическое расположение (серверная комната, стойка)
- System Contact - контактный email
- Community String - измените с public на уникальную строку (SNMPv2c)
- Bind Interface - LAN (не привязывайте к WAN)
- SNMP Modules - включите MibII, Netgraph, PF, Host Resources
Для SNMPv3 (рекомендуется для безопасности):
- Настройте через SSH на pfSense, отредактировав
/usr/local/etc/snmpd.conf - Добавьте пользователя SNMPv3 с аутентификацией SHA и шифрованием AES
- Настройте через SSH на pfSense, отредактировав
Создайте правило файрвола на LAN:
Action: Pass
Protocol: UDP
Source: monitoring_server_IP
Destination: LAN address
Destination port: 161На Zabbix:
- Добавьте хост с IP pfSense
- Примените шаблон Template Net pfSense SNMPv2 (или SNMPv3)
- Укажите SNMP community string
На LibreNMS:
- Добавьте устройство через web-интерфейс или CLI:
lnms device:add pfSense_IP -c community_string- LibreNMS автоматически определит pfSense и применит нужные сенсоры
Основные OID для мониторинга pfSense:
| Параметр | OID |
|---|---|
| CPU Usage | 1.3.6.1.4.1.2021.11 |
| Memory Usage | 1.3.6.1.4.1.2021.4 |
| Interface Traffic | 1.3.6.1.2.1.2.2.1 |
| PF States | 1.3.6.1.4.1.12325.1.200.1 |
Для расширенного мониторинга pfSense обратитесь к разделу мониторинг pfSense .
NetFlow/sFlow экспорт для анализа трафика
NetFlow экспортирует метаданные сетевых потоков (IP-адреса, порты, объемы, протоколы) в коллектор для детального анализа трафика и обнаружения аномалий.
Пошаговая настройка
Установите пакет: System - Package Manager - Available Packages - softflowd
Перейдите в 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)
Для мониторинга нескольких интерфейсов добавьте отдельные экземпляры softflowd
Коллекторы NetFlow:
- ntopng - установите через Package Manager на pfSense или отдельном сервере
- Elastic Stack - используйте Logstash с input netflow
- nfdump/nfsen - легковесное решение для хранения и анализа
Создайте правило файрвола для разрешения отправки NetFlow-данных к коллектору
Альтернативно для sFlow используйте пакет hsflowd:
- Установите через pkg из консоли pfSense
- Настройте коллектор sFlow
Captive Portal с ваучерами для гостей
Captive portal перенаправляет пользователей на страницу аутентификации перед предоставлением доступа к интернету. Система ваучеров позволяет генерировать одноразовые коды для гостей отеля, кафе или конференции.
Пошаговая настройка
Подготовьте отдельный интерфейс или VLAN для гостевой сети:
- Создайте VLAN для гостей (например, VLAN 50 - 10.50.0.0/24)
- Настройте DHCP для гостевого интерфейса
Перейдите в Services - Captive Portal:
- Нажмите Add для создания новой зоны
- Zone Name - Guest_WiFi
Настройте параметры зоны:
- Interfaces - гостевой интерфейс (VLAN 50)
- Maximum Concurrent Connections - ограничение (например, 100)
- Idle Timeout - 30 минут
- Hard Timeout - 480 минут (8 часов)
- Pass-through MAC - MAC-адреса устройств без аутентификации (принтеры, Smart TV)
Настройте страницу аутентификации:
- Загрузите HTML-шаблон портала в поле Portal page contents
- Добавьте логотип и стилизацию под бренд заведения
Включите ваучеры:
- Перейдите во вкладку Vouchers
- Enable Vouchers - включить
- Voucher Rolls - нажмите Add для создания серии:
- Roll Number - 1
- Minutes per Ticket - 60 (1 час) или 1440 (24 часа)
- Count - количество ваучеров в серии (например, 1000)
- Нажмите Generate и экспортируйте список ваучеров в CSV
Создайте правила файрвола на гостевом интерфейсе:
# Блокировка доступа к внутренней сети
Action: Block
Interface: Guest_WiFi
Source: Guest_WiFi net
Destination: LAN net
# Разрешение интернет-доступа
Action: Pass
Interface: Guest_WiFi
Source: Guest_WiFi net
Destination: any- Настройте bandwidth limiter для гостей: Firewall - Traffic Shaper - Limiters
- Ограничьте скорость на пользователя (например, 5 Mbps download / 2 Mbps upload)
Для настройки гостевой изоляции через VLAN обратитесь к разделу VLAN pfSense .
DHCP Failover с кластером высокой доступности
В конфигурации высокой доступности (HA) pfSense два узла синхронизируют DHCP-сервер для обеспечения непрерывной выдачи адресов при сбое одного из узлов.
Пошаговая настройка
Убедитесь, что кластер высокой доступности pfSense настроен и работает (CARP + pfsync)
На основном узле перейдите в Services - DHCP Server - LAN:
- Enable - включить
- Failover Peer IP - IP-адрес вторичного узла pfSense (CARP-интерфейс или выделенный sync-интерфейс)
На вторичном узле:
- Настройте аналогичный DHCP-сервер с теми же параметрами пула
- Failover Peer IP - IP основного узла
Настройте синхронизацию конфигурации:
- На основном узле: System - High Avail. Sync
- Включите синхронизацию DHCP Server
Проверьте работу failover:
- Выключите основной узел
- Убедитесь, что клиенты продолжают получать IP от вторичного узла
- Аренды DHCP сохраняются при переключении
Мониторинг: 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.
Пошаговая настройка
Убедитесь, что целевые компьютеры поддерживают 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
Перейдите в Services - Wake-on-LAN:
- Interface - LAN (интерфейс, к которому подключено целевое устройство)
- MAC Address - MAC-адрес целевого устройства
Нажмите Send для отправки magic packet
Для удобства сохраните устройства:
- Заполните MAC Address и Description
- Нажмите Save для добавления в список
- В дальнейшем просто нажимайте Wake напротив нужного устройства
Для WoL из другой подсети (через VPN или WAN):
- Необходим directed broadcast в целевую подсеть
- Создайте правило файрвола, разрешающее UDP-пакеты на порт 9 (или 7) к broadcast-адресу целевой подсети
- Настройте направленный broadcast: System - Advanced - Firewall & NAT - при необходимости включите Directed Broadcast
WoL через VPN:
- Подключитесь к pfSense через VPN
- Используйте встроенный интерфейс WoL или отправьте magic packet утилитой с VPN-клиента
Важно: WoL работает только в пределах broadcast-домена (одной подсети). Для пробуждения через маршрутизируемые сети требуется directed broadcast или специализированный relay.