web-dev-qa-db-fra.com

comment trouver la passerelle utilisée pour le routage

Ceci est dans l'environnement Unix. J'ai plusieurs itinéraires dans un hôte (visible avec la commande 'ip route show'). Si je cingle une adresse, comment puis-je savoir quelle passerelle a été utilisée pour acheminer le trafic?

J'ai essayé d'utiliser la commande traceroute, mais elle ne montre pas la passerelle immédiate.

En dessous de la sortie, 10.58.227.1 est ma passerelle par défaut.

# 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

Lorsque je traceroute à une adresse externe, la passerelle utilisée (passerelle par défaut 10.58.227.1) n'est pas affichée en sortie.

# 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

Existe-t-il une option permettant d'afficher les mêmes informations que celles fournies par la commande traceroute, , y compris la passerelle utilisée pour le routage?

40
divya

Vous pouvez utiliser la commande ip route get <address> pour demander au noyau de signaler l'itinéraire qu'il utiliserait pour envoyer un paquet à l'adresse spécifiée:

$ 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.1 est mon itinéraire par défaut. Si je demande une adresse qui ne passerait pas par la route par défaut:

$ ip route get 192.168.0.116
192.168.0.116 dev eth0  src 192.168.0.121 
    cache 
$ 
67
sarnold