Temukan antarmuka untuk rute ke host tertentu

14

Pada mesin Linux multihomed, bagaimana saya bisa mengetahui antarmuka jaringan apa yang akan digunakan untuk mengirim paket ke host tertentu? Saya perlu melakukan ini secara terprogram dan saya lebih suka tidak menguraikan dan menafsirkan tabel routing sendiri.

Rob H
sumber
Itulah gunanya tabel routing. Saya tidak membayangkan sebaliknya.
GioMac

Jawaban:

29

Gunakan ip routeuntuk ini. Contohnya:

ip route show to match 198.252.206.16
Michael Hampton
sumber
Sempurna! Terima kasih.
Rob H
11

Opsi lebih pendek:

ip route get 172.29.42.94
Alexey
sumber
5

Ya, seperti yang disarankan Michael Hampton, gunakan ip route. Jika Anda hanya menginginkan antarmuka, gunakan ini

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

Sebagai contoh:

# ip=8.8.8.8
# iface=$( ip -o route get $ip | perl -nle 'if ( /dev\s+(\S+)/ ) {print $1}' )
# echo $iface
eth1
mivk
sumber