У меня есть образ 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
приводит к connection refused
. Я подтвердил, что 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