Пересылка порты от одного мостового интерфейса к гостевому контейнеру в ОС хоста

У меня простая конфигурация.

Интеллектуальная карта, как все выглядит

Итак, у меня есть структура:

  • Proxmox Host OS (vmbr0, vmbr1)
    • Контейнер 1 (eth0)
    • Контейнер 2 (eth0)

Сети 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-адрес, который в настоящее время используется для всех этих запросов.

Заранее благодарим за любые идеи.

1
задан 31 March 2016 в 03:41
1 ответ

Я бы просто установил общедоступный адрес .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 имеет интерфейс как во внешней, так и во внутренней сети, а затем он может перенаправить порт.

1
ответ дан 3 December 2019 в 23:48

Теги

Похожие вопросы