web-dev-qa-db-ja.com

特定のホストへのルートのインターフェースを見つける

マルチホームのLinuxマシンで、特定のホストにパケットを送信するために使用されるネットワークインターフェイスを確認するにはどうすればよいですか?プログラムでこれを行う必要があるので、自分でルーティングテーブルを解析および解釈したくありません。

14
Rob H

使用する ip route このため。例えば:

ip route show to match 198.252.206.16
29
Michael Hampton

より短いオプション:

ip route get 172.29.42.94
12
Alexey

はい、マイケルハンプトンが示唆するように、ip route。インターフェースのみが必要な場合は、これを使用してください

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

例えば:

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