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.
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.
Réponses:
Utilisez ip route
pour cela. Par exemple:
ip route show to match 198.252.206.16
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