У меня есть два хоста OpenVZ с контейнерами. Это текущий макет:
Хост-A: (eth0 (подключен к Интернету), eth1 (подключен к Host-B))
Хост-B: (eth0 (подключен к Интернету), eth1 (подключен к Host-A))
На Host-A и Host-B есть контейнеры OpenVZ. Host-A и Host-B имеют по одному общедоступному IPv4-адресу (каждый), контейнеры не имеют общедоступных IP-адресов, они должны находиться во внутренней частной сети.
Как настроить сеть, чтобы контейнеры на обоих хостах могли связываться друг с другом и получать доступ к Интернету.
Получив огромное количество откликов на SF ... нет!?!, Я провел собственное исследование, чтобы понять это. Вот как я это сделал.
Конфигурация
-SSH на хост A и обновите / etc / network / interfaces, как показано ниже:
auto lo
iface lo inet loopback
iface eth1 inet manual
auto vmbr1
iface vmbr1 inet static
address 10.0.2.99
netmask 255.255.255.0
bridge_ports eth1
bridge_stp off
bridge_fd 0
auto eth0
iface eth0 inet static
address public_ip_here
netmask 255.255.255.0
gateway public_ip_gateway_here
auto vmbr0
iface vmbr0 inet static
address 10.0.1.1
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 '10.0.1.0/24' -o eth0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.0.1.0/24' -o eth0 -j MASQUERADE
-SSH на хост B и обновил / etc / network / interfaces, как показано ниже:
auto lo
iface lo inet loopback
iface eth1 inet manual
auto vmbr1
iface vmbr1 inet static
address 10.0.2.199
netmask 255.255.255.0
bridge_ports eth1
bridge_stp off
bridge_fd 0
auto eth0
iface eth0 inet static
address public_ip_here
netmask 255.255.255.0
gateway public_ip_gateway_here
auto vmbr0
iface vmbr0 inet static
address 10.0.1.1
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 '10.0.1.0/24' -o eth0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.0.1.0/24' -o eth0 -j MASQUERADE
-Во всех новых контейнерах создайте eth0 (-> vmbr0) и eth1 (-> vmbr1) и назначьте каждому интерфейсу eth статический IP-адрес из соответствующего блока.
-Во всех новых контейнерах убедитесь, что маршрут по умолчанию указывает на 10.0.1.1, в противном случае обновите файлы конфигурации сети в контейнере соответствующим образом.
Топология сети сервера:
Хост A (eth0: общедоступный IP-адрес, vmbr0: 10.0.1.0/24) (eth1 / vmbr1: 10.0.2.99/24)
Хост B (eth0: общедоступный IP-адрес, vmbr0: 10.0.1.0/24) (eth1 / vmbr1: 10.0.2.199/24)
Контейнеры (eth0-mapped-to-> vmbr0: 10.0.1. [CT #] / 24) (eth1-mapped-to-> vmbr1: 10.0.2. [CT # если на хосте-a, иначе CT # + 100 ] / 24)
Контейнеры на обоих хостах могут иметь одинаковый IP-адрес в IP-блоке 10.0.1.x, но не в IP-блоке 10.0.2.x
Пример конфигурации контейнера:
Контейнер № 100 на хосте A (eth0-> vmbr0: 10.0.1.100/24, шлюз: 10.0.1.1) (eth1-> vmbr1: 10.0.2.100/24, шлюз: 10.0.2.99)
Контейнер № 100 на хосте B (eth0-> vmbr0: 10.0.1.100/24, шлюз: 10.0.1.1) (eth1-> vmbr1: 10.0.2.200/24, шлюз: 10.0.2.199)
Контейнер № 101 на хосте A (eth0-> vmbr0: 10.0.1.101/24, шлюз: 10.0.1.1) (eth1-> vmbr1: 10.0.2.101/24, шлюз: 10.0.2.99)
Контейнер № 101 на хосте B (eth0-> vmbr0: 10.0.1.101/24, шлюз: 10.0.1.1) (eth1-> vmbr1: 10.0.2.201/24, шлюз: 10.0.2.199)