По дефолту Proxmox создает Linux bridge vmbr0, который смотрит через внешний интерфейс и все остальные интерфейсы виртуальных машин, подключенные к этому мосту, так же будут смотреть в мир. Поэтому необходимо поднять NAT из под которого и будут выходить все остальные виртуальные машины.
Для этого в разделе ноды Network, создадим новый Linux bridge vmbr1 уже с локальными сетевыми настройками приватной сети, пусть это будет 192.168.10.0/24
В нашем случае мы присвоили бриджовому интерфейсу IP адрес 192.168.10.101. Шлюз для этого моста не настраиваем, т.к это будет сопряженный интерфейс.
Перезагружаем выделенный сервер, после чего через ssh в консоли редактируем файл настроек сети /etc/network/interfaces находим наш раздел приватной сетки и приводим её к следующему виду:
auto vmbr1
iface vmbr1 inet static
address 192.168.10.101
netmask 255.255.255.0
bridge-ports none
bridge-stp off
bridge-fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s ‘192.168.10.0/24’ -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s ‘192.168.10.0/24’ -o vmbr0 -j MASQUERADE
то есть мы разрешаем форвард пакетов между интерфейсами и включаем NAT для сети 192.168.10.0 на интерфейсе vmbr0.
Проброс пакетов также можно задать классическим способом в /etc/sysctl.conf прописав туда строку:
net.ipv4.ip_forward=1
После этого перезагружаем сервер и приступаем к настройке гостевой виртуальной машины, в нашем случае для ОС Windows.
Перед этим создаем сетевой интерфейс для нашей машины модели VirtIO и принадлежностью к мосту vmbr1 и включаем машину.
Для ОС Windows сперва необходимо скачать Stable virtio-win.iso https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso после чего грузить его через веб-интерфейс, что несколько муторно поскольку iso образ весит 300+ MB, так, что можно скачать сразу в хранилище системы Proxmox напрямую с сервера:
wget -P /var/lib/vz/template/iso/ https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
и подключаем ISO диск уже через веб-интерфейс в настройках машины. В гостевой машине устанавливаем драйвера для сетевой карты. После установки драйверов, руками прописываем настройки сети 192.168.10.0, где IP задаем произвольный, а адрес шлюза = адрес бриджа, т.е в нашем случае 192.168.10.101
На этом настройка NAT завершена.
В случае необходимости возможно настроить проброс портов (Port forwarding).
Если необходимо пробросить определенные порты на нужные виртуальные машины. Это можно сделать с помощью iptables:
iptables -t nat -A PREROUTING -p tcp -d %ext_ip% —dport %ext_port% -i vmbr0 -j DNAT —to-destination %int_ip%:%int_port%
где,
%ext_ip% — внешний IP адресс
%ext_port% — внешний порт по которому будут обращаться к серверу из интернета.
%int_ip% — внутренний IP виртуальной машины
%int_port% — внутренний порт, на котором будет работать сервис в виртуальной машине.
В итоге должна получиться запись вида, например:
iptables -t nat -A PREROUTING -p tcp -d 8.8.8.8 —dport 4001 -i vmbr0 -j DNAT —to-destination 192.168.1.101:3389
То есть, запрос который будет прихолить на IP 8.8.8.8 по порту 4001 будет пробрасываться на IP виртуальной машины 192.168.1.101 на порт 3389
Просмотреть создавшие правила можно командой:
iptables -L -t nat
Сохраняем правила в iptables:
iptables-save
Настройка завершена.

