Proxmox с OPNsense в качестве pci-passthrough настройки, используемой в качестве брандмауэра / маршрутизатора /IPsec/PrivateLAN/MultipleExtIPs
Эта настройка должна основываться на Proxmox, находящемся за виртуальной машиной opnsense, размещенной на самом Proxmox, которая будет защищать Proxmox, предлагать брандмауэр, приватную локальную сеть и DHCP/DNS для виртуальных машин и предлагать IPsec-соединение с локальной сетью для доступа ко всем виртуальным машинам. /Proxmox, которые не являются NAT. Сервер является типичным сервером Hetzner, поэтому только на NIC, но несколько IP-адресов или / подсетей на этом NIC.
- Сервер Proxmox с 1 сетевой картой (eth0)
- 3 общедоступных 1IP, IP2/3 маршрутизируются MAC в центре обработки данных (до eth0)
- eth0 подключен через PCI к OPNsense KVM
- Частная сеть на vmbr30, 10.1.7.0/24
- Мобильный клиент IPsec подключается (172.16.0.0/24) к локальной сети
Чтобы лучше описать настройку, я создаю этот [рисунок][1]: (не уверен, что он идеален, скажите, что нужно улучшить)
Вопросы:
Как настроить такой сценарий, используя PCI-Passthrough вместо Bridged Mode.
Следить за
I) Why i cannot access PROXMOX.2 but access VMEXT.11 (ARP?)
II), поэтому мне нужно от * до * правила цепочки IPSEC, чтобы запустить ipsec. Скорее всего, это очень важный вопрос.
III) I tried to handle the 2 additional external IPs by adding virtual ips in OPNsense, adding a 1:1 nat to the internal LAN ip and opening the firewall for the ports needed ( for each private lan IP ) - but yet i could not get it running. The question is, should each private IP have a seperate MAC or not? What is specifically needed to get a multi-ip setup on WAN
1 ответ
Общая перспектива высокого уровня
Добавление pci-passthrough
Немного выходит за рамки, но то, что вам нужно, это
- последовательная консоль /LARA к хосту Proxmox.
- работающее соединение по локальной сети от opnsense (в моем случае vmbr30) к частному proxmox ( 10.1.7.2) и наоборот. Это понадобится вам, когда у вас есть только консоль tty, и вам нужно перенастроить интерфейсы opnsense для добавления
em0
как новое устройство WAN - Возможно, у вас было рабочее соединение IPsec до или вы открыли WAN ssh/gui для дальнейшей настройки opnsense после прохождения.
В общем это руководство - короче
vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
update-grub
vi /etc/modules
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
Затем перезагрузите компьютер и убедитесь, что у вас есть таблица iommu
find /sys/kernel/iommu_groups/ -type l
/sys/kernel/iommu_groups/0/devices/0000:00:00.0
/sys/kernel/iommu_groups/1/devices/0000:00:01.0
Теперь найдите свою сетевую карту
lspci -nn
в моем случае
00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (2) I219-LM [8086:15b7] (rev 31)
После этой команды вы отключаете eth0 от proxmox и теряете сетевое соединение. Убедитесь, что у вас есть tty! Пожалуйста, замените "8086 15b7"
а также 00:1f.6
с вашим pci-слотом (см. выше)
echo "8086 15b7" > /sys/bus/pci/drivers/pci-stub/new_id && echo 0000:00:1f.6 > /sys/bus/pci/devices/0000:00:1f.6/driver/unbind && echo 0000:00:1f.6 > /sys/bus/pci/drivers/pci-stub/bind
Теперь отредактируйте свою виртуальную машину и добавьте сетевую карту PCI:
vim /etc/pve/qemu-server/100.conf
и добавить (заменить 00: 1f.6)
machine: q35
hostpci0: 00:1f.6
Boot opnsense подключиться с помощью ssh root@10.1.7.1
со своего хоста tty proxmox отредактируйте интерфейсы, добавьте em0 в качестве интерфейса WAN и установите его на DHCP - перезагрузите ваш экземпляр opnsense, и он должен снова заработать.
добавить последовательную консоль в ваш opnsense
В случае, если вам нужно быстрое аварийное восстановление или ваш экземпляр opnsense не работает, последовательный интерфейс на основе CLI очень удобен, особенно если вы подключаетесь с использованием LARA/iLO в любом случае.
Сделай это, добавь
vim /etc/pve/qemu-server/100.conf
и добавить
serial0: socket
Теперь в вашем экземпляре opnsense
vim /conf/config.xml
и добавить / изменить это
<secondaryconsole>serial</secondaryconsole>
<serialspeed>9600</serialspeed>
Обязательно замените текущую скорость серийного номера на 9600. Не перезагружайте ваш opnsense vm, а затем
qm terminal 100
Нажмите Enter еще раз, и вы должны увидеть приглашение для входа
подсказка: вы также можете установить первичную консоль в последовательный режим, она поможет вам войти в загрузочные приглашения и многое другое и отладить их.
Подробнее об этом https://pve.proxmox.com/wiki/Serial_Terminal.
Сетевые интерфейсы на Proxmox
auto vmbr30
iface vmbr30 inet static
address 10.1.7.2
address 10.1.7.1
netmask 255.255.255.0
bridge_ports none
bridge_stp off
bridge_fd 0
pre-up sleep 2
metric 1
OPNsense
- WAN - это External-IP1, подключен em0 (пересылка по протоколу eth0), DHCP
- ЛВС 10.1.7.1, подключена к vmbr30
Настройка нескольких IP
Тем не менее, я рассматриваю только часть ExtraIP, а не дополнительную часть подсети. Чтобы иметь возможность использовать дополнительные IP-адреса, необходимо отключить отдельные MAC-адреса для каждого ip-адреса в роботе, чтобы все дополнительные IP-адреса имели одинаковый MAC-адрес ( IP1,IP2,IP3).
Затем в OPN для каждого внешнего IP-адреса вы добавляете виртуальный IP-адрес в Firewall-VirtualIPs(для каждого дополнительного IP-адреса, а не для основного IP-адреса, к которому вы привязали WAN). Дайте каждому Виртуальному IP хорошее описание, так как оно будет в поле выбора позже.
Теперь вы можете перейти либо Firewall->NAT->Forward, для каждого порта
- Назначение: ExtIP, с которого вы хотите пересылать (IP2/IP3)
- Звонил порт Dest: ваши порты для пересылки, как ssh
- Перенаправить целевой IP: ваша виртуальная машина / IP локальной сети для сопоставления, как 10.1.7.52
- Установите порт перенаправления, как ssh
Теперь у вас есть два варианта, первый считается лучшим, но может потребоваться больше обслуживания.
Для каждого домена, к которому вы обращаетесь к службам IP2/IP3, вы должны определить локальное сопоставление DNS для переопределения фактически частного IP. Это гарантирует, что вы сможете общаться изнутри с вашими сервисами, и позволит избежать проблем, которые у вас возникнут с тех пор, как вы использовали NATing ранее.
В противном случае вам нужно позаботиться об отражении NAT - иначе ваши блоки локальной сети не смогут получить доступ к внешнему IP2/IP3, что может привести, по крайней мере, к проблемам в веб-приложениях. Выполните эту настройку и активируйте исходящие правила и отражение NAT:
Что работает:
- OPN может маршрутизировать] 5 ] 5 доступ в Интернет и имеет правильный IP-адрес в глобальной сети
- OPN может получить доступ к любому клиенту в локальной сети ( VMPRIV.151 и VMEXT.11 и PROXMOX.2)
- я могу подключиться с помощью мобильного клиента IPSec к OPNsense, предлагая доступ к локальной сети (10.1.7.0/24) из виртуального диапазона IP-адресов 172.16.0.0/24
- я могу получить доступ к 10.1.7.1 ( opnsense) при подключении к IPsec
- я могу получить доступ к VMEXT с помощью клиента IPsec
- я могу перенаправить порты или 1:1NAT с дополнительного IP2 / IP3 на определенные частные виртуальные машины
Нижняя линия
Эта настройка работает намного лучше, чем альтернатива с мостовым режимом, который я описал. Больше нет асинхронной маршрутизации, нет необходимости в shorewall на proxmox, нет необходимости в сложной настройке моста на proxmox, и он работает намного лучше, так как мы можем снова использовать сброс контрольной суммы.
Downsides
Аварийное восстановление
Для аварийного восстановления вам понадобятся дополнительные навыки и инструменты. Вам нужна последовательная консоль LARA/iPO the proxmox hv (так как у вас нет подключения к Интернету), и вам нужно будет настроить свой экземпляр opnsense, чтобы разрешить последовательные консоли, как упомянуто здесь, так что вы можете получить доступ к opnsense, когда у вас вообще нет VNC-подключения и теперь SSH-соединение (даже из локальной сети, так как сеть может быть разорвана). Это работает довольно хорошо, но его нужно обучить один раз, чтобы быть быстрым, как альтернативы
кластер
Насколько я вижу, эта установка не может быть использована в кластере Proxmox Env. Первоначально вы можете настроить кластер, я сделал это с помощью настройки Tinc-Switch локально на Proxmox HV с использованием Seperate Cluster Network. Настроить первый легко, без перерыва. Второе соединение уже должно быть переведено в режим LARA/iPO, так как вам нужно завершить работу и удалить виртуальные машины для соединения (чтобы шлюз не работал). Вы можете сделать это, временно используя сетевую карту eth0 для Интернета. Но после того, как вы присоединились, снова переместили свои виртуальные машины, вы не сможете запустить виртуальные машины (и, следовательно, шлюз не будет запущен). Вы не можете запустить VMS, поскольку у вас нет кворума - и у вас нет кворума, поскольку у вас нет Интернета, чтобы присоединиться к кластеру. Итак, наконец, проблема с куриным яйцом, которую я не вижу, чтобы ее преодолеть. Если это необходимо сделать, то только на самом деле KVM не является частью виртуальных машин Proxmox, а скорее является автономной QEMU - я не желаю этого сейчас.