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?
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
$