Развертывание 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 и оптимальные настройки ВМ по умолчанию.

Рекомендуемые параметры:

ПараметрЗначение
vCPU2 (минимум 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:

  1. Проверьте, что тип консоли ВМ установлен на VNC или VMRC
  2. Убедитесь, что serial-порт не активирован, если вы используете графическую консоль
  3. При загрузке pfSense нажмите пробел для прерывания автозагрузки - это поможет диагностировать проблемы загрузчика

Proxmox VE

Создание виртуальной машины

В Proxmox VE создайте ВМ с типом ОС Other и версией Generic. Рекомендуемые параметры:

ПараметрЗначение
CPU2 ядра, тип 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:

  1. Перейдите в System - Package Manager - Available Packages
  2. Найдите и установите QEMU Guest Agent
  3. В настройках ВМ Proxmox включите опцию QEMU Guest Agent

Guest Agent обеспечивает корректное завершение работы ВМ при остановке через интерфейс Proxmox, заморозку файловой системы при создании снимков и передачу IP-адресов в интерфейс управления Proxmox.

PCI Passthrough

Для максимальной сетевой производительности можно пробросить физический сетевой адаптер в ВМ с pfSense:

  1. Включите IOMMU в BIOS/UEFI сервера (Intel VT-d или AMD-Vi)
  2. Добавьте параметры ядра в /etc/default/grub:
# Для Intel
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"

# Для AMD
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"
  1. Обновите GRUB и перезагрузите сервер
  2. В настройках ВМ добавьте PCI-устройство через Hardware - Add - PCI Device
  3. Выберите нужный сетевой адаптер и включите All Functions для многопортовых карт

Предупреждение: PCI passthrough привязывает ВМ к конкретному физическому хосту, что делает невозможной живую миграцию. Используйте passthrough только для WAN-интерфейса, где критична производительность.

Hyper-V

Создание виртуальной машины

Hyper-V поддерживает pfSense, но с ограничениями. Создайте ВМ поколения Generation 1 (Generation 2 не поддерживается pfSense из-за использования UEFI-загрузчика, несовместимого с FreeBSD).

Рекомендуемые параметры:

ПараметрЗначение
ПоколениеGeneration 1
vCPU2
ОЗУ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 настраивает оптимальные параметры ВМ для FreeBSD
  • model=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.

Настройка виртуальной машины

  1. Создайте ВМ с типом BSD - FreeBSD (64-bit)
  2. Выделите минимум 1024 МБ ОЗУ и 8 ГБ дискового пространства
  3. Добавьте два сетевых адаптера:
    • Адаптер 1 (WAN): режим NAT или Bridged (для доступа в интернет)
    • Адаптер 2 (LAN): режим Internal Network или Host-Only
  4. Тип адаптера: Intel PRO/1000 MT Desktop (82540EM) - поддерживается без дополнительных драйверов
  5. В разделе 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 меняются местами. Для устранения:

  1. Загрузитесь в консоль pfSense
  2. Выберите пункт 1) Assign Interfaces
  3. Переназначьте интерфейсы в правильном порядке, ориентируясь на 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 .

Last updated on