У меня есть образ Ubuntu Docker, работающий в Kubernetes, и я пытаюсь настроить переадресацию портов для маршрутизации запросов, поступающих на порт 5000, в другой пункт назначения и порт (10.30.8.191:443). Я установил iptables (не установлен по умолчанию) и добавил следующие правила:
iptables -A PREROUTING -t nat -p tcp --dport 5000 -j DNAT --to 10.30.8.191:443
iptables -A FORWARD -p tcp -d 10.30.8.191 --dport 443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Я также подтвердил, что для параметра / proc / sys / net / ipv4 / ip_forward
установлено значение 1
. Однако вызов curl на https://127.0.0.1:5000
приводит к тому, что соединение отклоняется
. Я проверил, что IP-адрес назначения 10.30.8.191
напрямую доступен с этого хоста.
Есть идеи, что мне может не хватать? Я не указал интерфейс в моих правилах iptables, что, насколько я понимаю, означает, что правила должны применяться ко всем существующим интерфейсам. Разве это не так?
nat / PREROUTING
. Для успешного выполнения запроса 127.0.0.1:5000 вы должны добавить такое же правило DNAT
в цепочку nat / OUTPUT
: iptables -t nat -A OUTPUT \
-d 127.0.0.1 -p tcp --dport 5000 \
-j DNAT --to 10.30.8.191:443
net.ipv4. conf.lo.route_localnet
переменная: sysclt -w net.ipv4.conf.lo.route_localnet=1
SNAT
: iptables -t nat -A POSTROUTING \
-d 10.30.8.191 -p tcp --dport 443 \
-m conntrack --ctstate DNAT --ctorigdstport 5000 \
-j MASQUERADE