У меня простая конфигурация.
Интеллектуальная карта, как все выглядит
Итак, у меня есть структура:
Сети 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 имеет интерфейс как во внешней, так и во внутренней сети, а затем он может перенаправить порт.