Saltar al contenido

Cómo habilitar traceroute en la máquina linux

Solución:

Podemos ver desde man 8 traceroute ese:

  • UDP es el mecanismo de traceroute predeterminado en Linux
  • traceroute espera recibir un mensaje “ICMP inalcanzable” en respuesta a su consulta
  • los seguimientos comienzan en el puerto 33434 y se incrementan en uno para cada salto

Mientras tanto, Microsoft confirma que Windows utiliza “Solicitudes de eco ICMP” en su implementación.

Entonces, aquí está la respuesta para permitir que un host procese correctamente la entrada y realice traceroutes de salida. Agregue una regla para rechazar (no eliminar) el tráfico en los puertos UDP 33434-33474, y responder a las solicitudes de eco, y permitir también los paquetes salientes coincidentes, si está restringiendo el tráfico saliente.

# reject (not drop) packets for inbound traceroutes from Linux boxes
iptables -I INPUT -p udp --dport 33434:33474 -j REJECT

# accept ping requests for Windows-style traceroutes
iptables -I INPUT -p ICMP --icmp-type echo-request -j ACCEPT

# allow ping responses for Windows-style traceroutes
iptables -I OUTPUT -p ICMP --icmp-type echo-reply -j ACCEPT

# allow the server to perform its own traceroutes
iptables -I OUTPUT -p udp --dport 33434:33474 -j ACCEPT

Para el registro, el extracto de la página del manual:

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).

Gracias por todas las entradas.

Se me ocurrió un script de shell para hacer el trabajo por mí. Creo que esto sería útil para que otros usuarios también realicen la tarea. Tenga en cuenta que la IP de la máquina local. Realice los cambios necesarios en consecuencia.

#!/bin/sh
echo "Enabling Traceroute..."

#Outbound UDP traffic Policy

iptables -I OUTPUT -o eth0 -p udp --dport 33434:33524 -m state --state NEW -j ACCEPT

iptables -I INPUT -p udp --sport 33434:33524 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

#Inbound ICMP traffic Policy


iptables -I INPUT -p icmp --icmp-type 3/3 -d 10.222.4.212 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

iptables -I INPUT -p icmp --icmp-type 11  -d 10.222.4.212 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Primero de todo: el iptables -A comando agregar la nueva regla después el final de tus cadenas reales. Fueron procesados ​​solo después de la última regla en sus cadenas. Pero no sucederá porque la última regla ya filtra todo! Necesitas poner estos comandos antes de su última regla, que se puede hacer con el -I <n> bandera de las iptables.

Segundo: Traceroute funciona enviando paquetes ICMP, al igual que lo hace ping. Es esencialmente un ping, que intenta obtener una lista de los nodos de red remotos en el camino a la máquina de destino, enviando paquetes con campos TTL de paquetes bajos pero crecientes.

No tengo ni idea de dónde sacaste esta cosa udp / 33434. Si desea traceroute, habilite ICMP, que no tiene puertos.

Tercero: (reaccionando a commect) Parece que, a veces, traceroute no usa solo paquetes icmp simples, sino también paquetes udp o incluso tcp. Incluso hay una herramienta llamada tcptraceroute, que puede hacer esto último de una manera muy buena configurable. Si no está seguro, consulte con strace o con un tcpdump, donde su traceroute realmente quiere comunicarse, y habilite al menos este puerto.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *