22.11.2011

Proxmox: гибридная сеть Bridge+NAT

Иногда нужно иметь часть виртуальных машин с внешним ("белым") IP и нормальным функционированием с Интернетом, а иногда виртуальным машинам нежелательно висеть наружу потрохами (как например LDAP-серверу). Если физическая хост-машина только одна, а виртуалки надо делать и так и так, то вот выход - создать еще одну сеть, только виртуальную, и к ней зацепиться бриджем.

Итак у нас есть интерфейс eth0 с сетью 222.111.123.231 (маска и шлюз тоже имеются) и ничего больше. Пусть внутренняя сеть имеет адресацию 192.168.0.0/24.

Сначала нам понадобится дополнительный интерфейс-пустышка, у которого будет собственный внутренний адрес, чтобы хост-машина могла общаться со своими виртуалками, а также работать им шлюзом:
lsmod | grep dummy

Если вывода не было, значит нужно подключить модуль, а если показалось что-то, то этот шаг пропустить.
Импорт модуля:
echo "dummy" >> /etc/modules
modprobe dummy

Теперь надо настроить два интерфейса (реальный eth0 и виртуальный dummy0) и два бриджа (в реальную сеть vmbr0 и в виртуальную vmbr1). Вот так изменится конфиг интерфейсов:
vi /etc/network/interfaces

# Loopback device:
auto lo
iface lo inet loopback

# Wide Area Network
auto vmbr0
iface vmbr0 inet static
  address  
222.111.123.231
  netmask   255.255.255.196
  gateway  
222.111.123.227
  bridge_ports eth0
  bridge_stp off
  bridge_fd 0

# Real phisical device: eth0
auto  eth0
iface eth0 inet manual

# default route to access subnet
up route add -net
222.111.123.226 netmask 255.255.255.196 gw 222.111.123.227 vmbr0

# Local Area Network
auto vmbr1
iface vmbr1 inet static
  address  192.168.0.1
  netmask  255.255.255.0
  bridge_ports dummy0
  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.0.0/16 -o vmbr0 -j SNAT --to-source
222.111.123.231
  post-up    iptables -t nat -A POSTROUTING -o vmbr1 -j SNAT --to-source 192.168.0.1
  post-down  iptables -t nat -D POSTROUTING -s 192.168.0.0/16 -o vmbr0 -j SNAT --to-source 222.111.123.231
  post-down  iptables -t nat -D POSTROUTING -o vmbr1 -j SNAT --to-source 192.168.0.1


# Dummy device for LAN
auto  dummy0
iface dummy0 inet manual



Как видите сразу же после запуска vmbr1 добавляется правило NAT в iptables для того, чтобы машины из внутренней подсети могли ходить в интернет сами.

Прошу обратить внимание на -s 192.168.0.0/16 - нужно отделить поток именно с этих адресов, в пакеты, которым будет сменен source-address. Потому что если вы будете менять вообще всему трафику, то у Вас и траффик с внешних интерфейсов пойдет со подмененным исходным, хотя он  и так с нормальным адресом был сделан.

Осталось добавить интерфейс dummy0 в во внутренний бридж vmbr1:
brctl addif vmbr1 dummy0
Проверить так:
brctl show

И теперь можно перезапускать машину.
Только 10 раз подумайте, сможете ле Вы до нее добраться в случае, если что-то пошло не так и сеть отлетела!


Комментариев нет:

Отправить комментарий