58 votes

comment trouver la passerelle utilisée pour le routage

Ceci est dans un environnement Unix. J'ai plusieurs routes dans un hôte (visibles avec la commande 'ip route show'). Si j'envoie un ping à 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.

D'après la sortie ci-dessous, 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 fais traceroute vers une adresse externe, la passerelle utilisée (passerelle par défaut 10.58.227.1) n'apparaît pas dans la 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 ?

98voto

sarnold Points 3438

Vous pouvez utiliser le ip route get <address> pour demander au noyau d'indiquer la route 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 ma route par défaut. Si je demande une adresse, elle ne passera 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 
$

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X