У меня есть следующая настройка:
Проксмокс Хозяин выделенный сервер с одним общедоступным IP-адресом и установленными IPTables и кучей виртуальных машин с установленным докером.
Я использую iptables для переадресации порта 443 на одну из виртуальных машин через DNAT, и он отлично работает извне. Хозяин т.е. Интернет. Но если я попытаюсь получить доступ к ресурсам внутри виртуальной машины, работающей на виртуальной машине, через общедоступный IP-адрес, она будет недоступна.
Вариант использования: у меня есть nginx с SSL в качестве обратного прокси-сервера для служб, работающих в докере на виртуальной машине (бэкэнд + внешнее приложение), и мне нужно получить доступ к серверной части из внешнего интерфейса через «общедоступный DNS, IP», поскольку сертификат SSL создается для общедоступного DNS, указывающего на общедоступный IP-адрес и порт перенаправляется на nginx виртуальной машины.
У меня есть открытый интерфейс, подключенный к vmbr0, и еще один brige vmbr172 (172.20.0.0/16) для виртуальных машин.
Мои текущие правила IPTables:
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to 172.20.2.9:443
iptables -t nat -A POSTROUTING -s '172.20.0.0/16' -o vmbr0 -j MASQUERADE
iptables -L -n -t нат -v
Цепочка PREROUTING (политика ACCEPT 58449 пакетов, 3018К байт)
pkts bytes target prot opt in out source target
1941 105K DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 to:172.20.2.9:443
Цепочка POSTROUTING (политика ACCEPT 5511 пакетов, 332К байт)
pkts bytes target prot opt in out source target
212K 18M MASQUERADE all -- * vmbr0 172.20.0.0/16 0.0.0.0/0
Я попытался изменить интерфейс на Любые но соединение, кажется, просто "зависает" и тайм-аут. Думаю, мне нужно какое-то правило постмаршрутизации, но я не могу понять, как оно должно выглядеть.