По дефолту 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

Настройка завершена.

Теги: