tcpdump não atende ao tráfego redirecionado pelo iptables

2

A regra iptables a seguir é usada para redirecionar todo o tráfego de internet proveniente da eth1 para a porta 3000 no localhost (interface lo com ip 127.0.0.1):

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:3000

Então o tcpdump está configurado para registrar todo o tráfego na interface:

tcpdump -i lo -w output.dump

No entanto, depois que enviei algum tráfego da Internet (porta 80) através da eth1, esse tráfego não é registrado pelo tcpdump.

Não sei por que isso acontece. Alguém pode por favor lançar alguma luz? Obrigado.

    
por tonytz 23.04.2013 / 21:51

1 resposta

3

Como você está reescrevendo o destino do pacote IP para um dos endereços do host local, ele não passou pela interface a qual o endereço pertence a ( lo no seu caso), mas é simplesmente manipulado por a pilha diretamente. Assim, você não pode capturá-lo ouvindo na interface de loopback. Isso não seria diferente se você escolhesse o endereço da interface fisicamente presente.

Se você precisar capturar a conversa, sugiro usar uma expressão de filtro apropriada. Algo ao longo das linhas de

tcpdump -i lo -i eth1 host 127.0.0.1 or port 3000

deve fazer o que quiser.

    
por 24.04.2013 / 09:08