インターネットに接続するためにどのインターフェイスを使用しているのか、どうすればわかりますか?

インターネットに接続するためにどのインターフェイスを使用しているのか、どうすればわかりますか?

私は持ってeth0いてwlan0それに応じて行うifconfigことができますping google.com

一般ユーザーの場合、rootどのようなインターフェイスを見つけることができますか?ポジティブたとえば、ping(または必須ではない他のping)はどのインターフェイスを使用しますか?

Ubuntu 11.04またはFedora 14を使用しています。

答え1

route次のコマンドを使用してデフォルトパスを見つけることができます。

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     1      0        0 eth0
link-local      *               255.255.0.0     U     1000   0        0 eth0
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

Ifaceターゲット行の列は、default使用するインターフェイスを示します。

答え2

私のバージョンは基本的に以下に基づいています。これそしてこれ:

route | grep '^default' | grep -o '[^ ]*$'

これ、実験場、macOSの場合:

route -n get default | grep 'interface:' | grep -o '[^ ]*$'

答え3

GNU/Linux システムの場合:

#!/bin/sh

# host we want to "reach"
host=google.com

# get the ip of that host (works with dns and /etc/hosts. In case we get  
# multiple IP addresses, we just want one of them
host_ip=$(getent ahosts "$host" | awk '{print $1; exit}')
    
# only list the interface used to reach a specific host/IP. We only want the part
# between dev and the remainder (use grep for that)
ip route get "$host_ip" | grep -Po '(?<=(dev ))(\S+)'

答え4

通常、明示的にルーティングされるDMZ、プライベートネットワーク、VMホストなどとは異なり、「残りの」インターネットにルーティングするために一般的に使用されるデフォルトのネットワークインターフェイスを取得します。

$ ip route get 8.8.8.8 | sed -n 's/.* dev \([^\ ]*\) .*/\1/p'
eth0

関連情報