Nenhuma das respostas existentes explica como permitir um traceroute de entrada; a resposta aceita nem sequer tenta responder à pergunta.
Podemos ver em man 8 traceroute
que:
- O UDP é o mecanismo padrão do traceroute no Linux
-
traceroute
espera receber uma mensagem "ICMP inacessível" em resposta à sua consulta
- os rastreios iniciam na porta 33434 e são incrementados em um para cada salto
Enquanto isso, a Microsoft confirma que o Windows usa "ICMP Echo Requests" em sua implementação.
Então, aqui está a resposta para permitir que um host processe corretamente traceroutes de entrada. Anexe uma regra para rejeitar (não descartar) o tráfego nas portas UDP 33434-33474 e responder a solicitações de eco.
iptables -I INPUT -p udp --dport 33434:33474 -j REJECT
iptables -I INPUT -p ICMP --icmp-type echo-request -j ACCEPT
Para o registro, o trecho da página man:
LIST OF AVAILABLE METHODS
In general, a particular traceroute method may have to be chosen by -M name, but
most of the methods have their simple cmdline switches (you can see them after the
method name, if present).
default
The traditional, ancient method of tracerouting. Used by default.
Probe packets are udp datagrams with so-called "unlikely" destination ports. The
"unlikely" port of the first probe is 33434, then for each next probe it is incre-
mented by one. Since the ports are expected to be unused, the destination host nor-
mally returns "icmp unreach port" as a final response. (Nobody knows what happens
when some application listens for such ports, though).
This method is allowed for unprivileged users.
icmp -I
Most usual method for now, which uses icmp echo packets for probes.
If you can ping(8) the destination host, icmp tracerouting is applicable as well.
tcp -T
Well-known modern method, intended to bypass firewalls.
Uses the constant destination port (default is 80, http).