Развертывание pfSense в виртуальной среде
Виртуализация pfSense позволяет консолидировать сетевую инфраструктуру, упростить резервное копирование и развертывание нескольких изолированных экземпляров на одном физическом сервере. В этом руководстве рассмотрены все основные платформы виртуализации с акцентом на сетевую конфигурацию - ключевой аспект, определяющий стабильность и производительность виртуального маршрутизатора.
Минимальные требования для виртуальной машины pfSense: 1 ГБ ОЗУ (рекомендуется 2 ГБ и более при использовании Suricata/Snort), 8 ГБ дискового пространства и минимум два сетевых интерфейса (WAN и LAN). Для маршрутизации на скоростях выше 1 Гбит/с рекомендуется выделять 2 и более vCPU.
VMware ESXi
Создание виртуальной машины
При создании ВМ в ESXi выберите тип гостевой ОС Other - FreeBSD 14 (64-bit). pfSense основан на FreeBSD, поэтому выбор корректного типа ОС обеспечивает правильную работу VMware Tools и оптимальные настройки ВМ по умолчанию.
Рекомендуемые параметры:
| Параметр | Значение |
|---|---|
| vCPU | 2 (минимум 1) |
| ОЗУ | 2048 МБ |
| Диск | 16 ГБ, Thin Provisioning |
| SCSI-контроллер | LSI Logic SAS или pvscsi |
| Сетевой адаптер | VMXNET3 |
Сетевые адаптеры: VMXNET3 и E1000
VMXNET3 - паравиртуальный адаптер VMware, обеспечивающий максимальную производительность. pfSense включает драйвер vmx(4) для VMXNET3, который поддерживает аппаратные контрольные суммы, TSO (TCP Segmentation Offload) и RSS (Receive Side Scaling). Это рекомендуемый тип адаптера для всех production-развертываний.
E1000 - эмулированный адаптер Intel 82545EM. Используется как запасной вариант при проблемах совместимости. Производительность E1000 существенно ниже VMXNET3 - разница особенно заметна при нагрузке свыше 500 Мбит/с.
Важно: при замене типа адаптера на уже настроенной ВМ интерфейсы pfSense могут поменять свои имена (например, em0 станет vmx0). После замены необходимо переназначить интерфейсы через меню консоли (пункт 1 - Assign Interfaces).
Настройка сети ESXi
Создайте отдельные виртуальные коммутаторы (vSwitch) или группы портов для WAN и LAN. Убедитесь, что:
- Для WAN-группы портов включен режим Promiscuous Mode: Accept, если pfSense должен видеть трафик, предназначенный не только его MAC-адресу
- Для группы портов с VLAN trunk установлен VLAN ID 4095 (All)
- Forged Transmits: Accept включен на группах портов, если pfSense выполняет NAT
Консоль ESXi
Для доступа к консоли pfSense через vSphere используйте Web Console (HTML5) или VMRC. Если консоль не отображает меню pfSense:
- Проверьте, что тип консоли ВМ установлен на VNC или VMRC
- Убедитесь, что serial-порт не активирован, если вы используете графическую консоль
- При загрузке pfSense нажмите пробел для прерывания автозагрузки - это поможет диагностировать проблемы загрузчика
Proxmox VE
Создание виртуальной машины
В Proxmox VE создайте ВМ с типом ОС Other и версией Generic. Рекомендуемые параметры:
| Параметр | Значение |
|---|---|
| CPU | 2 ядра, тип host |
| ОЗУ | 2048 МБ |
| Диск | 16 ГБ, VirtIO Block (virtio-blk) |
| Сеть | VirtIO (virtio-net) |
| Дисплей | VirtIO-GPU или Std VGA |
VirtIO и производительность
pfSense поддерживает драйверы VirtIO (virtio_net, virtio_blk) начиная с версии 2.4. VirtIO обеспечивает околонативную производительность ввода-вывода, что делает его оптимальным выбором для Proxmox.
Если при установке pfSense не обнаруживает VirtIO-диск, временно переключите контроллер на IDE или SATA, установите систему, а затем добавьте VirtIO-диск и перенесите на него установку.
QEMU Guest Agent
Установите пакет qemu-guest-agent через менеджер пакетов pfSense для корректного взаимодействия с Proxmox:
- Перейдите в System - Package Manager - Available Packages
- Найдите и установите QEMU Guest Agent
- В настройках ВМ Proxmox включите опцию QEMU Guest Agent
Guest Agent обеспечивает корректное завершение работы ВМ при остановке через интерфейс Proxmox, заморозку файловой системы при создании снимков и передачу IP-адресов в интерфейс управления Proxmox.
PCI Passthrough
Для максимальной сетевой производительности можно пробросить физический сетевой адаптер в ВМ с pfSense:
- Включите IOMMU в BIOS/UEFI сервера (Intel VT-d или AMD-Vi)
- Добавьте параметры ядра в
/etc/default/grub:
# Для Intel
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
# Для AMD
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"- Обновите GRUB и перезагрузите сервер
- В настройках ВМ добавьте PCI-устройство через Hardware - Add - PCI Device
- Выберите нужный сетевой адаптер и включите All Functions для многопортовых карт
Предупреждение: PCI passthrough привязывает ВМ к конкретному физическому хосту, что делает невозможной живую миграцию. Используйте passthrough только для WAN-интерфейса, где критична производительность.
Hyper-V
Создание виртуальной машины
Hyper-V поддерживает pfSense, но с ограничениями. Создайте ВМ поколения Generation 1 (Generation 2 не поддерживается pfSense из-за использования UEFI-загрузчика, несовместимого с FreeBSD).
Рекомендуемые параметры:
| Параметр | Значение |
|---|---|
| Поколение | Generation 1 |
| vCPU | 2 |
| ОЗУ | 2048 МБ (статическая память) |
| Диск | 16 ГБ, VHDX |
| Сетевой адаптер | Синтетический адаптер (по умолчанию) |
Integration Services
pfSense поддерживает Hyper-V Integration Services (BIS - BSD Integration Services) начиная с FreeBSD 10. Для корректной работы:
- Убедитесь, что Integration Services включены в настройках ВМ
- pfSense автоматически загружает модули hv_vmbus, hv_storvsc и hv_netvsc
- Синтетические сетевые адаптеры обеспечивают приемлемую производительность при стандартных нагрузках
Legacy-адаптеры
Если pfSense не обнаруживает синтетический адаптер при установке, добавьте Legacy Network Adapter в настройках оборудования ВМ. Legacy-адаптер эмулирует Intel 21140 (DEC Tulip) и гарантированно поддерживается, но его производительность значительно ниже синтетического адаптера. После завершения установки замените Legacy-адаптер на синтетический.
Совет: отключите динамическую память (Dynamic Memory) для ВМ с pfSense. Динамическое выделение памяти может вызывать нестабильную работу сервисов, особенно Suricata и ntopng.
KVM/QEMU
Установка с помощью virt-install
Для создания ВМ pfSense на KVM используйте virt-install:
virt-install \
--name pfsense \
--ram 2048 \
--vcpus 2 \
--cpu host \
--os-variant freebsd14.0 \
--disk path=/var/lib/libvirt/images/pfsense.qcow2,size=16,bus=virtio \
--network bridge=br-wan,model=virtio \
--network bridge=br-lan,model=virtio \
--graphics vnc,listen=0.0.0.0 \
--cdrom /path/to/pfSense-CE-2.7.2-RELEASE-amd64.iso \
--boot cdromКлючевые параметры:
--cpu hostпередает полный набор инструкций процессора в ВМ, включая AES-NI--os-variant freebsd14.0настраивает оптимальные параметры ВМ для FreeBSDmodel=virtioдля сетевых адаптеров обеспечивает максимальную производительностьbus=virtioдля дисков обеспечивает паравиртуальный ввод-вывод
VirtIO и оптимизация
KVM с VirtIO обеспечивает производительность, близкую к bare-metal. Дополнительные оптимизации:
- Включите vhost-net для разгрузки сетевого стека с QEMU на ядро хоста
- Используйте macvtap вместо Linux bridge при необходимости прямого доступа к физическому интерфейсу
- Для NUMA-серверов привяжите vCPU к ядрам одного NUMA-узла с помощью
numactlили virsh vcpupin
VirtualBox
VirtualBox подходит для лабораторных и тестовых развертываний pfSense. Для production-использования рекомендуются ESXi, Proxmox или KVM.
Настройка виртуальной машины
- Создайте ВМ с типом BSD - FreeBSD (64-bit)
- Выделите минимум 1024 МБ ОЗУ и 8 ГБ дискового пространства
- Добавьте два сетевых адаптера:
- Адаптер 1 (WAN): режим NAT или Bridged (для доступа в интернет)
- Адаптер 2 (LAN): режим Internal Network или Host-Only
- Тип адаптера: Intel PRO/1000 MT Desktop (82540EM) - поддерживается без дополнительных драйверов
- В разделе System - Acceleration убедитесь, что включены VT-x/AMD-V и Nested Paging
Ограничение: VirtualBox не поддерживает VirtIO для сетевых адаптеров в гостевых ОС FreeBSD. Используйте эмулированные адаптеры Intel E1000.
Облачные платформы
AWS
pfSense доступен в AWS Marketplace как AMI (Netgate pfSense Plus). Особенности развертывания:
- Выберите тип инстанса с поддержкой Enhanced Networking (ENA) - рекомендуется c5.large и выше
- Создайте минимум два Elastic Network Interface (ENI): один для WAN (public subnet), один для LAN (private subnet)
- Security Groups применяются поверх правил pfSense - учитывайте это при диагностике
- Source/Dest Check необходимо отключить на ENI для корректной маршрутизации
Azure
В Azure pfSense развертывается из Azure Marketplace (Netgate pfSense Plus):
- Рекомендуемый размер ВМ: Standard_D2s_v3 и выше
- Создайте два сетевых интерфейса (NIC) в разных подсетях
- Включите IP Forwarding на обоих NIC
- Network Security Groups (NSG) работают параллельно с pfSense - для упрощения диагностики создайте permissive NSG и управляйте фильтрацией через pfSense
Типовые проблемы виртуализации
Порядок сетевых интерфейсов
При добавлении или удалении виртуальных сетевых адаптеров интерфейсы pfSense могут поменять свои имена и порядок. Это приводит к тому, что WAN и LAN меняются местами. Для устранения:
- Загрузитесь в консоль pfSense
- Выберите пункт 1) Assign Interfaces
- Переназначьте интерфейсы в правильном порядке, ориентируясь на MAC-адреса
Для предотвращения проблемы запишите MAC-адреса каждого виртуального адаптера при создании ВМ.
Тип консоли
Если консоль ВМ отображает пустой экран или артефакты:
- В ESXi переключите Video Card на SVGA с достаточным объемом видеопамяти
- В Proxmox используйте тип дисплея VirtIO-GPU или Default (Std VGA)
- В KVM убедитесь, что параметр
--graphicsуказан корректно (vnc или spice) - Для headless-серверов настройте serial-консоль: в загрузчике pfSense добавьте
console=comconsoleв/boot/loader.conf
Проброс AES-NI
Инструкции AES-NI необходимы для аппаратного ускорения шифрования VPN (IPsec, OpenVPN). Для проброса AES-NI в виртуальную машину:
- ESXi: включается автоматически при типе CPU host или при явном включении AES-NI в настройках ВМ
- Proxmox/KVM: используйте тип CPU host (
--cpu hostв virt-install илиcpu: hostв конфигурации ВМ) - Hyper-V: AES-NI прозрачно проксируется в гостевую ОС
- VirtualBox: поддерживается при включении VT-x и Nested Paging
Проверьте доступность AES-NI в pfSense: System - Advanced - Miscellaneous или через консоль командой dmesg | grep -i aes.
Оптимизация производительности
Общие рекомендации для всех гипервизоров:
- Отключите offloading в pfSense при проблемах с производительностью или потерях пакетов: System - Advanced - Networking, снимите флаги Hardware Checksum Offload, Hardware TCP Segmentation Offload и Hardware Large Receive Offload
- Выделяйте фиксированный объем ОЗУ вместо динамического - pfSense чувствителен к изменению доступной памяти
- Используйте паравиртуальные адаптеры (VMXNET3, VirtIO) везде, где это возможно
- Не выделяйте избыточные ресурсы - pfSense эффективно работает с 2 vCPU и 2 ГБ ОЗУ для большинства сценариев
Дополнительные сведения о настройке сети pfSense доступны в разделе правила файрвола . Для настройки VPN на виртуальном pfSense обратитесь к разделу VPN . Общие вопросы по установке рассмотрены в разделе установка pfSense .