Proxmox за NAT , проброс портов и DHCP

Proxmox за NAT , проброс портов и DHCP

Нередко, когда сервер арендуется у какого-нибудь хостинг-провайдера, к нему прилагается от 1-го до нескольких айпишников. В случае если сервер «каноничный» и все сервисы ставятся напрмую на ОС, деля ресурсы меж собой, то проблемы не возникнет. Но в случае если же намечается точное деление ресурсов сервера при помощи виртуализации, то в некий момент может возникнуть необходимость или в дополнительных айпишниках или в организации NAT и пробросе портов. В случае если, естественно, сервисы глядят наружу.

Организация Bridge (Сетевой мост)

Итак, сделать NAT для нескольких виртуалок не сложно. Создадим bridge с адресом 192.168.10.1 и маской /24 (255.255.255.0) .

Затем перемещаемся по пути /etc/network/interfaces и приводим конфигурацию созданного нами интерфейса к такому виду:

auto vmbr0
iface vmbr0 inet static
        address  192.168.10.1
        netmask  24
        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 enp1s0f0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '192.168.10.0/24' -o enp1s0f0 -j MASQUERADE

С помощью данных правил мы разрешаем виртуальным машинам на vmbr0 подключаться к интернету через (в моем случае) enp1s0f0.

Port forwarding (Проброс портов)

Для того, чтобы Ваши сервисы на виртуалках были доступны извне существует проброс портов.Сделать это можно при помощи iptables:

iptables -A PREROUTING -t nat -i enp1s0f0 -p tcp -d "Ваш внешний ip адрес" --dport "Внешний порт" -j DNAT --to "Внутренний ip виртуальной машины : внутренний порт на котором висит сервис"

После того как применили правила проверяем все ли верно:

root@debian:~# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  anywhere             debian               tcp dpt:3389 to:192.168.10.6:3389

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  192.168.10.0/24      anywhere

Сохраняем правила

Теперь нам необходимо сделать так, чтобы правила при перезагрузке восстанавливались.Для этого используем iptables-save.

iptables-save > /etc/iptables.up.rules

Создаем скрипт загрузки правил:

nano /etc/network/if-pre-up.d/iptables

Вписываем в него команду загрузки правил из сохраненного файла:

#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules

Выставим права на исполнение данному файлу:

chmod +x /etc/network/if-pre-up.d/iptables

Для того чтобы более просто сохранять правила вы можете установить пакет iptables-persistent , который будет сам сохранять правила.

Разворачиваем DHCP

Если Вы не хотите настраивать сеть вручную то можно установить DHCP -сервер.

Установим сервер:

apt-get install isc-dhcp-server

В файле /etc/dhcp/dhcpd.conf большинство параметров можно оставить неизменными, однако директиву authoritative; нужно раскомментировать. Также можно увеличить время выдачи адресов:

default-lease-time 40320;
max-lease-time 40320;

Далее описываем настройки нашей подсети:

# NAT subnet on vmbr0
subnet 192.168.10.0 netmask 255.255.255.0 {
 range 192.168.10.50 192.168.10.254;
 option routers 192.168.10.1;
 option domain-name-servers 8.8.8.8, 8.8.4.4;
}

Затем в файле /etc/default/isc-dhcp-server настраиваем интерфейсы:

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACESv4="vmbr0"
INTERFACESv6=""

И наконец перезапускаем DHCP.

service isc-dhcp-server restart

На этом настройка закончена. Виртуалки за NATом будут автоматически получать настройки сети.

Поделиться: