Como o iptables funciona quando o DNAT e o REDIRECT são definidos com a mesma regra?

1
$ 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

[update] BTW, 10.10.103.58 é apenas o IP da eth0 da máquina local.

Eu vi a resposta em Diferença entre DNAT e REDIRECT em IPTABLES , então eu sei que o REDIRECT só funciona para redirecionamento local.

[update] Mas a minha pergunta é, neste caso, o Kubernetes define tanto o DNAT quanto o REDIRECT na mesma máquina, por quê?

[update] Meu palpite do nome das chains é que DNAT encaminhará qualquer solicitação enviada do host para 11.1.1.88 to 10.10.103.58:43318 . Mas, para a solicitação enviada de um contêiner em execução neste host, a corrente REDIRECT funcionará.

Estou certo?

    
por harryz 05.08.2015 / 09:17

1 resposta

1

Não há necessidade de configurar as duas regras. Um deles será suficiente para o mesmo tipo de tráfego.

  1. Se você quiser redirecionar o tráfego para a máquina local (firewall), você pode use um deles. Usar DNAT pode ser útil se você quiser especificar um endereço IP diferente na máquina local diferente daquele escolhido por REDIRECT , caso sua máquina tenha vários endereços IP.
  2. Se você quiser redirecionar o tráfego para outra máquina, é necessário para usar DNAT para especificar o novo destino.

Em suma, DNAT é mais geral e pode ser usado em todos os casos.

    
por 05.08.2015 / 10:31