$ iptables -t nat -L -n
Chain KUBE-PORTALS-CONTAINER (1 references)
target prot opt source destination
…
REDIRECT tcp -- 0.0.0.0/0 11.1.1.88 /* service-nginx */ tcp dpt:8001 redir ports 43318
Chain KUBE-PORTALS-HOST (1 references)
target prot opt source destination
…
DNAT tcp -- 0.0.0.0/0 11.1.1.88 /* service-nginx */ tcp dpt:8001 to:10.10.103.58:43318
[обновление] Кстати, 10.10.103.58 - это просто IP-адрес eth0 локальной машины.
Я увидел ответ в Разница между DNAT и REDIRECT в IPTABLES, поэтому я знаю, что REDIRECT работает только для локального перенаправления.
[обновление] Но у меня вопрос: в этом случае Kubernetes устанавливает DNAT и REDIRECT на одном компьютере. Почему?
[обновление] Судя по названию сети, DNAT
перенаправит любой запрос, отправленный с хоста, на 11.1.1.88
к 10.10.103.58:43318
. Но для отправки запроса из контейнера, запущенного на этом хосте, REDIRECT
вместо этого будет работать цепочка.
Я прав?
Нет необходимости устанавливать оба правила. Одного их хватит на такой же тип трафика.
DNAT
может быть полезно, если вы хотите указать другой IP-адрес на локальном компьютере, отличный от того, который получил REDIRECT
если у вашего компьютера несколько IP-адресов.DNAT
чтобы указать новый пункт назначения.Коротко, DNAT
является более общим и может использоваться во всех случаях.