Конфигурация у меня простая.
Карта разума, как все выглядит
Итак, у меня есть структура:
Сети Proxmox:
vmbr0
Link encap: Ethernet
inet addr: 136.136.136.161
Bcast: 136.136.136.191
Mask: 255.255.255.192
vmbr1
Link encap: Ethernet
inet addr: 192.168.1.254
Bcast: 136.136.1.255
Mask: 255.255.255.0
Сеть контейнера 1:
eth0
Link encap: Ethernet
inet addr: 136.211.123.180
Bcast: 136.211.123.180
Mask: 255.255.255.255
Контейнер 2 сети:
eth0
Link encap: Ethernet
inet addr: 192.168.1.1
Bcast: 192.168.1.255
Mask: 255.255.255.0
Обычный iptables проксмокс выглядит так. (Пример пересылки TeamSpeak³ для udp-порта 9987)
~# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT udp -- anywhere anywhere udp dpt:9987 to:192.168.1.1:9987
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 192.168.1.0/24 anywhere
Это добавляется через:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o vmbr0 -j MASQUERADE
iptables -t nat -A PREROUTING -i vmbr0 -p udp -m udp --dport 9987 -j DNAT --to-destination 192.168.1.1:9987
И вопрос, как сделать форвард из контейнера 1 в контейнер 2?
В настоящий момент запросы отправляются на хост Proxmox, и они перенаправляют эти запросы в контейнеры через iptables. Но контейнеру 1 назначен статический IP-адрес, потому что обычно все порты должны идти на этот сервер. - кроме нескольких, которые я хочу переслать в другой контейнер.
Итак, как я могу перенаправить запросы на другой статический IP-адрес контейнера 1 в контейнер 2?
Контейнер 2 - это контейнер TS³. Контейнер 1 - это контейнер «статического IP-адреса». И у хоста proxmox тоже есть собственный IP-адрес, который в настоящий момент используется для всех этих запросов.
Заранее спасибо за любые идеи.
Я бы просто установил общедоступный адрес .180 на интерфейсе vmbr0 хост-ОС, а затем сделал бы переадресацию портов в хост-ОС.
Я не вижу смысла иметь здесь отдельную виртуальную машину. Если вы действительно хотите сделать дополнительную сложность с отдельной виртуальной машиной, вы можете попробовать это.
Настройка сети вашего контейнера 1 нечетная, вы не можете получить доступ к любому другому хосту в 136.211.123.128/255.255.255.192
сеть из этого контейнера. Вы должны использовать ту же сетевую маску и широковещательные адреса, которые используются в ОС хоста.
Для фактической пересылки вам необходимо добавить второй интерфейс к контейнеру 1, который соединен с vmbr1
. Затем вы можете создать правило переадресации портов в контейнере 1:
iptables -t nat -A PRETROUTING -i eth0 -p udp -m udp --dport 9987 -j DNAT --to-destination 192.168.1.1:9987
Итак, контейнер 1 имеет интерфейс как во внешней, так и во внутренней сети, и затем он может перенаправить порт.