Rechercher l'interface pour l'itinéraire vers un hôte spécifique


14

Sur une machine Linux multi-hôtes, comment savoir quelle interface réseau sera utilisée pour envoyer un paquet à un hôte spécifique? J'ai besoin de le faire par programme et je préfère ne pas analyser et interpréter la table de routage moi-même.


C'est à cela que sert la table de routage. Je ne l'imagine pas autrement.
GioMac

Réponses:




5

Oui, comme le suggère Michael Hampton, utilisez ip route. Si vous ne voulez que l'interface, utilisez ceci

ip -o route get $ip | perl -nle 'if ( /dev\s+(\S+)/ ) {print $1}'

Par exemple:

# ip=8.8.8.8
# iface=$( ip -o route get $ip | perl -nle 'if ( /dev\s+(\S+)/ ) {print $1}' )
# echo $iface
eth1
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.