Вступ

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
  • віддалений клієнт підключається до OPNsense через WireGuard
  • після підключення відкривається доступ до 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.

Рекомендована схема:

  • Net0 → vmbr0
  • Net1 → vmbr1

Обидві мережеві карти можна задати як VirtIO.

Налаштування OPNsense у віртуальній машині Proxmox VE - Image 1

Крок 3. Встановіть OPNsense

Після завантаження з ISO виберіть встановлення системи.

У live-режимі доступні варіанти входу та запуску інсталятора.

Дані для встановлення:

  • login: installer
  • password: opnsense

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

Після завершення встановлення:

  • перезавантажте віртуальну машину
  • завантажте вже встановлену систему

Крок 4. Призначте інтерфейси WAN і LAN

Після першого запуску OPNsense призначте інтерфейси:

  • WAN → vtnet0
  • LAN → vtnet1

Якщо 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 address → 192.168.10.1
  • Enter the new LAN IPv4 subnet bit count → 24
  • For a LAN, press <ENTER> for none → просто натисніть Enter
  • Configure IPv6 address LAN interface via DHCP6? → n або Enter
  • Enter the new LAN IPv6 address → Enter
  • Do you want to enable the DHCP server on LAN? → y
  • Range start → 192.168.10.100
  • Range end → 192.168.10.200
  • Do you want to revert to HTTP as the web configurator protocol? → n

У результаті OPNsense роздаватиме адреси в мережі LAN через DHCP.

Крок 6. Перевірте робочу схему мережі

Приклад робочої схеми:

  • WAN — зовнішня IP-адреса
  • LAN — 192.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 Type → None
  • IPv6 Configuration Type → None

Налаштування 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 не відповідає на ping, це часто пов’язано з 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 для складніших сценаріїв публікації сервісів

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