За промовчанням Proxmox створює Linux bridge vmbr0, який дивиться через зовнішній інтерфейс і всі інші інтерфейси віртуальних машин, підключені до цього мосту, так само дивитимуться у світ. Тому необхідно підняти NAT з-під якого і виходитимуть всі інші віртуальні машини.

Для цього в розділі ноди Network, створимо новий Linux bridge vmbr1 вже з локальними налаштуваннями мережі приватної мережі, нехай це буде 192.168.10.0/24

Linux bridge

У нашому випадку ми надали бриджовому інтерфейсу 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 та включаємо машину.

VirtIO

Для ОС 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

Налаштування завершено.