Cómo encontrar la puerta de enlace utilizada para el enrutamiento

45

Esto está en el entorno de Unix. Tengo varias rutas en un host (visible con el comando 'ip route show'). Si estoy haciendo ping a una dirección, ¿cómo puedo saber qué puerta de enlace se utilizó para enrutar el tráfico?

Intenté usar el comando traceroute, pero no muestra la puerta de enlace inmediata.

De la salida a continuación, 10.58.227.1 es mi puerta de enlace predeterminada.

# ip r l
10.58.227.0/24 dev front_eth1  proto kernel  scope link  src 10.58.227.231
169.254.0.0/17 dev bond0  proto kernel  scope link  src 169.254.0.4
default via 10.58.227.1 dev front_eth1  proto gated

Cuando hago un seguimiento de ruta a una dirección externa, la puerta de enlace utilizada (puerta de enlace predeterminada 10.58.227.1) no se muestra en la salida.

# traceroute -n -I 10.63.21.118
traceroute to 10.63.21.118 (10.63.21.118), 30 hops max, 40 byte packets
 1  10.58.112.1  0.507 ms  1.008 ms  1.017 ms
 2  10.63.21.118  0.228 ms  0.233 ms  0.234 ms

¿Hay alguna opción para ver la misma información proporcionada por el comando traceroute, incluida la puerta de enlace utilizada para el enrutamiento?


fuente

Respuestas:

73

Puede usar el ip route get <address>comando para pedirle al núcleo que informe la ruta que usaría para enviar un paquete a la dirección especificada:

$ ip route get 4.2.2.1
4.2.2.1 via 192.168.0.1 dev eth0  src 192.168.0.121 
    cache 
$ 

192.168.0.1es mi ruta predeterminada Si solicito una dirección que no supere la ruta predeterminada:

$ ip route get 192.168.0.116
192.168.0.116 dev eth0  src 192.168.0.121 
    cache 
$ 
sarnold
fuente
Eso es mucho :) Eso resuelve el problema.
Pregunta secundaria aleatoria: si 192.168.0.1es "ruta predeterminada" o "puerta de enlace" ... ¿a qué nombre se referiría 192.168.0.121? ¿Solo "fuente"?
dtmland
@sarnold, confirma si necesita Internet en ese servidor.
kd12
@ kd12 solo necesita una conexión a Internet en ese servidor si desea enrutar paquetes a Internet. Puede configurar redes IP sin estar conectado a Internet si lo desea; las tablas de enrutamiento no lo saben y no les importa, todo funciona igual. :)
sarnold