Trova l'interfaccia per il percorso verso host specifico


14

Su una macchina Linux multihomed, come posso sapere quale interfaccia di rete verrà utilizzata per inviare un pacchetto a un host specifico? Devo farlo a livello di programmazione e preferirei non analizzare e interpretare la tabella di routing da solo.


Ecco a cosa serve la tabella di routing. Non immagino altrimenti.
GioMac,

Risposte:



11

Opzione più breve:

ip route get 172.29.42.94

5

Sì, come suggerisce Michael Hampton, usa ip route. Se vuoi solo l'interfaccia, usa questo

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

Per esempio:

# ip=8.8.8.8
# iface=$( ip -o route get $ip | perl -nle 'if ( /dev\s+(\S+)/ ) {print $1}' )
# echo $iface
eth1
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.