Введение

OPNsense можно использовать в Proxmox VE как виртуальный firewall, маршрутизатор и VPN-шлюз. В такой схеме он разделяет внешний трафик и внутреннюю сеть виртуальных машин, а также позволяет безопасно подключаться к ним через VPN.

OPNsense поддерживает несколько VPN-технологий, включая WireGuard и OpenVPN. Кроме того, он умеет публиковать внутренние сервисы наружу через NAT / Port Forward и reverse proxy-сценарии.

В этой статье рассмотрим:

  • создание виртуальной машины с OPNsense;
  • назначение WAN и LAN;
  • базовую настройку сети;
  • подключение Windows VM к внутренней сети;
  • настройку WireGuard для доступа к OPNsense и виртуальным машинам.

В нашем сценарии OPNsense используется прежде всего как центральная точка маршрутизации, фильтрации трафика и VPN-доступа.

Схема работы

Используем следующую схему:

  • WAN OPNsense подключён к vmbr0;
  • LAN OPNsense подключён к vmbr1;
  • Windows VM подключены к vmbr1;
  • удалённый клиент подключается по WireGuard к OPNsense;
  • после подключения открывается доступ к OPNsense и внутренним VM.

Шаг 1. Подготовьте ISO-образ OPNsense

Если образ скачан в виде .iso.bz2, его нужно распаковать:

bzip2 -dk OPNsense-26.1.2-dvd-amd64.iso.bz2

После этого получится файл .iso, который можно загрузить в ISO-хранилище Proxmox.

Шаг 2. Создайте виртуальную машину OPNsense

В Proxmox создайте новую виртуальную машину и подключите ISO OPNsense.

Минимально потребуется:

  • 2 сетевых интерфейса;
  • один для WAN;
  • один для LAN.

Если вы используете дополнительный внешний IP, WAN-интерфейс должен быть подключён к внешнему bridge и при необходимости использовать MAC-адрес, который требуется провайдером для дополнительного IP.

После создания VM у вас может быть только один Network Device. В этом случае добавьте второй:

Your VM → Hardware → Add → Network Device

Для второго интерфейса выберите vmbr1.

Рекомендуемая схема:

  • Net0vmbr0
  • Net1vmbr1

Обе сетевые карты можно задать как VirtIO.

Настройка OPNsense в виртуальной машине Proxmox VE - Image 1

Шаг 3. Установите OPNsense

После загрузки с ISO выберите установку системы.

В live-режиме доступны варианты входа и запуска установщика.

Данные для установки:

  • login: installer
  • password: opnsense

После установки укажите новый пароль для root — он понадобится для дальнейшего входа в систему и веб-интерфейс.

После завершения установки:

  • перезагрузите виртуальную машину;
  • загрузите уже установленную систему.

Шаг 4. Назначьте интерфейсы WAN и LAN

После первого запуска OPNsense назначьте интерфейсы:

  • WANvtnet0
  • LANvtnet1

Если OPNsense видит только один интерфейс, значит:

  • в виртуальной машине не добавлена вторая сетевая карта;
  • или внутренний bridge ещё не создан в Proxmox.

Для назначения интерфейсов в консоли OPNsense нажмите 1 и укажите:

  • WAN → vtnet0
  • LAN → vtnet1

Настройка OPNsense в виртуальной машине Proxmox VE - Image 2

Шаг 5. Настройте IP-адреса WAN и LAN

Настройка WAN

Для настройки IP-адреса нажмите 2, выберите интерфейс WAN и введите:

  • дополнительный внешний IP;
  • маску / префикс;
  • шлюз.

Здесь используются параметры, выданные провайдером.

Настройка LAN

Теперь настроим LAN, чтобы виртуальные машины автоматически получали IP-адреса из внутренней сети и имели доступ в интернет через OPNsense.

В консоли OPNsense снова нажмите 2 и выберите LAN.

Пример значений:

  • Configure IPv4 address LAN interface via DHCP?n
  • Enter the new LAN IPv4 address192.168.10.1
  • Enter the new LAN IPv4 subnet bit count24
  • For a LAN, press <ENTER> for none → просто Enter
  • Configure IPv6 address LAN interface via DHCP6?n или Enter
  • Enter the new LAN IPv6 addressEnter
  • Do you want to enable the DHCP server on LAN?y
  • Range start192.168.10.100
  • Range end192.168.10.200
  • Do you want to revert to HTTP as the web configurator protocol?n

В результате OPNsense будет раздавать адреса в сети LAN по DHCP.

Шаг 6. Проверьте рабочую схему сети

Пример рабочей схемы:

  • WAN — внешний IP-адрес;
  • LAN192.168.10.1/24

Настройка OPNsense в виртуальной машине Proxmox VE - Image 3

Шаг 7. Подключите Windows VM к LAN

На этом этапе нужно создать отдельную Windows VM, потому что именно через неё мы будем открывать веб-интерфейс OPNsense из внутренней сети и выполнять первичную настройку. Виртуальная машина создаётся в Proxmox через ISO-образ Windows, по тому же принципу, как ранее устанавливался OPNsense.

При создании Windows VM обязательно подключите её к vmbr1, чтобы она находилась во внутренней LAN-сети за OPNsense. Также обязательно используйте VirtIO для обнаружения виртуального диска и сетевого адаптера. Это важно, потому что без драйверов VirtIO установщик Windows обычно не видит диск и сетевой интерфейс. Поэтому вместе с ISO Windows нужно также подключить ISO с драйверами VirtIO, чтобы во время установки можно было загрузить необходимые драйверы и продолжить настройку системы.

После установки Windows VM сможет получить внутренний IP-адрес от DHCP на LAN-интерфейсе OPNsense, и через неё можно будет открыть адрес OPNsense в браузере для дальнейшей настройки.

После загрузки Windows проверьте сетевые параметры:

  • ipconfig

Нормальный результат:

  • IPv4-адрес из сети 192.168.10.0/24;
  • шлюз 192.168.10.1.

Настройка OPNsense в виртуальной машине Proxmox VE - Image 4

Шаг 8. Подключитесь к OPNsense по LAN

Для первичной настройки удобнее сначала открыть OPNsense из внутренней сети.

На Windows VM откройте браузер и перейдите по адресу LAN OPNsense. В нашем примере это:

https://192.168.10.1/

Введите данные для входа:

  • логин: root
  • пароль: тот, который вы указали при завершении установки

Шаг 9. Разрешите доступ к OPNsense снаружи только для своего IP

Для удобства дальнейшей настройки можно временно открыть доступ к веб-интерфейсу OPNsense извне, но только для своего внешнего IP-адреса.

Перейдите в:

Firewall → Rules → WAN

Нажмите Add и создайте правило со следующими параметрами:

  • Action: Pass
  • Interface: WAN
  • TCP/IP Version: IPv4
  • Protocol: TCP

В блоке Source:

  • Source: Single host or Network
  • укажите ваш внешний IP

В блоке Destination:

  • Destination: This Firewall

В блоке Destination Port Range:

  • From: HTTPS
  • To: HTTPS

Description, например:

Allow HTTPS to OPNsense GUI from my IP

Сохраните правило и нажмите Apply Changes.

После этого веб-интерфейс OPNsense будет доступен с вашего внешнего IP-адреса.

Шаг 10. Установите плагин WireGuard

В веб-интерфейсе OPNsense перейдите в:

System → Firmware → Plugins

Установите плагин WireGuard.

После установки откройте:

VPN → WireGuard

WireGuard — один из самых удобных вариантов для доступа к OPNsense и внутренним виртуальным машинам. Однако OPNsense не ограничивается только им: система также поддерживает OpenVPN, road warrior и site-to-site сценарии.

Для небольших инфраструктур WireGuard обычно проще и удобнее в сопровождении. OpenVPN тоже остаётся хорошим вариантом, если нужен привычный SSL VPN-подход или экспорт готовых клиентских профилей.

Шаг 11. Создайте WireGuard Instance

В разделе:

VPN → WireGuard → Instances

создайте instance, например:

  • Name: wgroad
  • Listen Port: 51820
  • Tunnel Address: 10.10.10.1/24

Сгенерируйте keypair и сохраните instance.

Шаг 12. Подготовьте клиент WireGuard на своём ПК

Чтобы подключаться к локальной сети через WireGuard, установите его на свой компьютер и создайте ключи клиента.

Ниже приведён один из рабочих вариантов для Linux.

1. Установите WireGuard

sudo apt update
sudo apt install -y wireguard wireguard-tools

Проверьте, что установка прошла успешно:

which wg

Ожидаемый результат:

/usr/bin/wg

2. Создайте ключи клиента

mkdir -p ~/wireguard
chmod 700 ~/wireguard
wg genkey | tee ~/wireguard/client.key | wg pubkey > ~/wireguard/client.pub

Проверить ключи можно так:

cat ~/wireguard/client.pub
cat ~/wireguard/client.key
  • client.pub — публичный ключ клиента, он понадобится для Peer в OPNsense;
  • client.key — приватный ключ клиента, он понадобится для файла wg0.conf.

Шаг 13. Создайте Peer клиента

В разделе:

VPN → WireGuard → Peers

создайте peer для клиентской системы.

Пример:

  • Name: os
  • Public Key: вставьте содержимое client.pub
  • Allowed IPs: 10.10.10.2/32
  • Keepalive: 25

После этого привяжите peer к созданному instance.

Настройка OPNsense в виртуальной машине Proxmox VE - Image 5

Шаг 14. Включите WireGuard глобально

Внизу страницы WireGuard включите:

  • Enable WireGuard

Нажмите Apply.

Настройка OPNsense в виртуальной машине Proxmox VE - Image 6

Шаг 15. Назначьте интерфейс WireGuard

Перейдите в:

Interfaces → Assignments

Добавьте интерфейс:

  • wg0 (WireGuard – wgroad)

После добавления откройте его и включите:

  • Enable Interface

В качестве описания можно указать, например:

  • wg

Обычно на этой странице больше ничего задавать не требуется:

  • IPv4 Configuration TypeNone
  • IPv6 Configuration TypeNone

Настройка OPNsense в виртуальной машине Proxmox VE - Image 7 Настройка OPNsense в виртуальной машине Proxmox VE - Image 8 Настройка OPNsense в виртуальной машине Proxmox VE - Image 9

Шаг 16. Создайте правила firewall для WireGuard

1. Правило на WAN

Перейдите в:

Firewall → Rules → WAN

Добавьте правило:

  • Action: Pass
  • Protocol: UDP
  • Source: any
  • Destination: This Firewall
  • Destination Port: 51820
  • Description: Allow WireGuard

Сохраните правило и нажмите Apply.

2. Правила на интерфейсе WireGuard

Перейдите в:

Firewall → Rules → wg

Создайте два правила.

Правило 1 — доступ к LAN

  • Action: Pass
  • Interface: wg
  • Direction: in
  • TCP/IP Version: IPv4
  • Protocol: any
  • Source: WG net
  • Destination: LAN net
  • Description: WG to LAN

Правило 2 — доступ к самому OPNsense

  • Action: Pass
  • Interface: wg
  • Direction: in
  • TCP/IP Version: IPv4
  • Protocol: any
  • Source: WG net
  • Destination: This Firewall
  • Description: WG to Firewall

Сохраните оба правила и нажмите Apply.

После этого через VPN будет доступно:

  • сама OPNsense;
  • внутренняя сеть 192.168.10.0/24.

Шаг 17. Настройте клиентский конфиг WireGuard

На клиентской Linux-системе создайте конфигурационный файл:

nano ~/wireguard/wg0.conf

Пример содержимого:

[Interface]
PrivateKey = <client private key>
Address = 10.10.10.2/32

[Peer]
PublicKey = <server public key>
Endpoint = <WAN-IP>:51820
AllowedIPs = 10.10.10.0/24, 192.168.10.0/24
PersistentKeepalive = 25

Где:

  • PrivateKey — содержимое файла client.key;
  • PublicKey — публичный ключ сервера из WireGuard instance в OPNsense;
  • Endpoint — внешний IP OPNsense и порт 51820.

Поднимите туннель:

sudo wg-quick up ~/wireguard/wg0.conf

Проверьте соединение:

ping -c 4 10.10.10.1

ping -c 4 192.168.10.1

Если всё работает, затем проверьте доступ к Windows VM по её внутреннему IP.

Шаг 18. Подключение к Windows VM через VPN

После установки VPN-соединения удалённый клиент должен иметь доступ к:

  • OPNsense: 192.168.10.1
  • Windows VM: например 192.168.10.109

Если Windows не пингуется, это часто связано с Windows Firewall. При этом RDP уже может работать, если он включён.

Рекомендуется:

  • включить Remote Desktop;
  • при необходимости разрешить ICMP Echo в Windows Firewall.

Дополнительная информация: OPNsense умеет не только VPN

Хотя в этой статье OPNsense используется как firewall и VPN-шлюз, его возможности этим не ограничиваются.

Помимо WireGuard и OpenVPN, OPNsense позволяет:

  • публиковать внутренние сервисы наружу через Destination NAT / Port Forward;
  • использовать reverse proxy для HTTP(S), TCP и в ряде случаев UDP-сервисов;
  • проксировать не только сайты, но и другие приложения — в зависимости от выбранного reverse proxy-компонента.

В экосистеме OPNsense доступны решения на базе nginx, HAProxy и Caddy, которые подходят не только для веб-сайтов, но и для более общих proxy-сценариев.

То есть OPNsense можно использовать не только как «VPN-коробку», но и как центральную точку публикации внутренних сервисов. По подходу это действительно напоминает Nginx Proxy Manager, но в более гибком и инфраструктурном варианте: с firewall rules, NAT, сегментацией, VPN и дополнительными службами в одном узле.

При этом сам firewall всё же лучше использовать как точку маршрутизации и публикации, а не как место размещения самих сайтов, приложений или баз данных. Для сайта, панели, приложения или БД безопаснее выделять отдельную внутреннюю VM и публиковать её через OPNsense по мере необходимости.

Почему эта схема удобна

Такой подход позволяет:

  • не публиковать RDP напрямую в интернет;
  • использовать OPNsense как центральный VPN-шлюз;
  • безопасно подключаться к нескольким виртуальным машинам;
  • управлять доступом через firewall rules;
  • при необходимости публиковать внутренние веб-сервисы и другие приложения наружу через OPNsense.

Итог

После выполнения этих шагов получается полноценная схема:

  • Proxmox VE как гипервизор;
  • OPNsense как виртуальный firewall, маршрутизатор и VPN-шлюз;
  • Windows VM во внутренней сети;
  • доступ к OPNsense и VM через WireGuard;
  • возможность в дальнейшем использовать OpenVPN, NAT и reverse proxy для более сложных сценариев публикации сервисов.

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