Маршрутизация нескольких публичных IP-адресов во внутренние подсети
Мне был назначен блок /29 ips для выделенного сервера, который я арендую. Я хочу иметь возможность сохранить один из этих IP-адресов для управления самим сервером и перенаправить каждый из остальных в свою внутреннюю подсеть, чтобы несколько контейнеров OpenVZ могли совместно использовать публичные IP-адреса.
Например, у меня может быть два веб-сервера и два файловых сервера в 4 контейнерах. Это не те службы, которые будут запущены, но для удобства я буду их использовать. Я хочу, чтобы один из моих общедоступных IP-адресов (XX.XX.XX.2) указывал на два контейнера в подсети 192.168.2.0/24, а другой общедоступный IP-адрес (XX.XX.XX.3) - на эти контейнеры. в подсети 192.158.3.0/24. Связь между подсетями не требуется, но каждый контейнер должен иметь доступ к сети.
Я попытался использовать маршрутизацию на основе источника, как описано здесь, и NAT, как описано в вики OpenVZ, здесь безуспешно. Хост работает под управлением Centos 6, а каждая виртуальная машина работает под управлением Debian 7, если это имеет значение.
1 ответ
Настройте свои контейнеры openvz для использования мостовой сети ( используя veth-интерфейсы).
Создайте мост для каждой внутренней сети, к которой вы хотите подключить ваши контейнеры (в вашем случае 2 моста, один для 192.168.2.0/24 и один для 192.168.3.0/24. Давайте назовем их br2 и br3).
Дайте каждому мосту IP-адрес в правильной сети (например, br2 может быть 192.168.2.1 и br3 192.168.3.1)
Настройте контейнеры, соединяющие их с соответствующими мостами.
Например, подключите к br2 контейнеры, которые должны находиться в сети 192.168.2.0/24 (скажем, это CT1 и CT2), и к br3 те, которые вам нужны на 192.168.3.0/24 (скажем, они CT3 и CT4).
Дайте каждому контейнеру IP-адрес в той же сети моста, к которому они подключены. Установите IP-адрес моста и шлюз по умолчанию.
Например: CT1 и CT2 с IP 192.168.2.101 и 192.168.2.102. Их шлюз будет 192.168.2.1 (IP-адрес br2)
Включить IP-пересылку на физическом хосте
Настройте все общедоступные IP-адреса на интерфейсе физического хоста, подключенном к Интернету (скажем, это eth0), с правильной маской подсети.
Настройте NAT для ваших CT следующим образом:
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j SNAT --to first.pulic.ip.address iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth0 -j SNAT --to second.pulic.ip.address