# Развертывание pfSense в виртуальной среде

> Полное руководство по установке pfSense на VMware ESXi, Proxmox VE, Hyper-V, KVM/QEMU и VirtualBox - выбор адаптеров, проброс устройств и оптимизация

Source: https://opennix.org/docs/pfsense/virtualization/pfsense-virtualization-guide/


Виртуализация 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:

1. Проверьте, что тип консоли ВМ установлен на **VNC** или **VMRC**
2. Убедитесь, что serial-порт не активирован, если вы используете графическую консоль
3. При загрузке 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:

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"
```

3. Обновите GRUB и перезагрузите сервер
4. В настройках ВМ добавьте PCI-устройство через **Hardware - Add - PCI Device**
5. Выберите нужный сетевой адаптер и включите **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:

```bash
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 доступны в разделе [правила файрвола](/docs/pfsense/firewall/pfsense-firewall-rules/). Для настройки VPN на виртуальном pfSense обратитесь к разделу [VPN](/docs/pfsense/vpn/). Общие вопросы по установке рассмотрены в разделе [установка pfSense](/docs/pfsense/installation/).

