Observando respostas de ping sob DNAT

1

Estou confuso ao tentar entender o mecanismo DNAT sob as circunstâncias abaixo.

Meu entendimento:

DNAT = Tradução do endereço de rede de destino: Funcionalidade que traduz o endereço de destino dos pacotes de entrada para o destino x.

Estou enfrentando dificuldades para entender o caminho de resposta do DNAT.

Por exemplo: Eu tenho uma máquina (A) com um IP de x1 e queria que todas as conexões / pacotes que chegam a esta máquina (dest y1) sejam reencaminhadas para outra máquina (B) com um endereço IP de z1.

Então, adicionei uma nova regra de NAT, conforme abaixo:

iptables -t nat -A PREROUTING -s x1 -d y1 -j DNAT --to-destination z1.

Teste na máquina A: ping -I x1 y1

Se eu executar tcpdump -i eth6 icmp na máquina A, receberei uma resposta do IP y1 em vez de z1? ou é algo que o un-NAT é executado com base na máscara de sub-rede?

E quando eu monitorei tcpdump -i eth6 host z1 , não há ping ou pacote de entrada. Alguém poderia esclarecer este cenário e meu entendimento?

E também, existe alguma maneira de fazermos este tcpdump se o pacote for traduzido localmente?

    
por Snake 31.12.2014 / 22:11

1 resposta

0

Sua culpa é que você precisa de três sistemas para que isso faça sentido:

A -----> B

deve ser substituído por

A -----> B -----> C

Nesse caso, você precisaria da cadeia PREROUTING em B , pois o pacote seria entregue ao sistema a partir do exterior.

Mas se você usar iptables no mesmo sistema no qual você cria os pacotes, eles serão gerados localmente e eles não passarão PREROUTING . Com dois sistemas, você pode fazer isso:

A -----> B

deve ser substituído por

A -----> C

( C não precisa existir se nenhuma resposta for necessária para testar o DNAT).

Nesse caso, você precisa de tal regra:

 iptables -t nat -A OUTPUT -d y1 -j DNAT --to-destination z1

Mas se você alterar o endereço de destino para o seu, o pacote não alcançará eth6 . Você precisa de tcpdump -i lo -n para ver.

    
por 01.01.2015 / 02:31