私が持っています eth0
およびwlan0
ifconfig
に従って、私はping google.com
。
(root
ではなく通常のユーザーで)どのインターフェイスがactiveであるかを確認するにはどうすればよいですか。
Ubuntu 11.04またはFedora 14を使用しています
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
列は、使用されているインターフェースを示します。
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 src (use grep for that)
ip route get "$Host_ip" | grep -Po '(?<=(dev )).*(?= src| proto)'
一発ギャグ:
ip route get 8.8.8.8 | sed -n 's/.*dev \([^\ ]*\) table.*/\1/p'
通常は明示的にルーティングされるDMZ、プライベートネットワーク、VM Hostなど)とは逆に、「残りの」インターネットにルーティングするために通常使用されるデフォルトのネットワークインターフェースを取得します。
$ ip -4 route ls | grep default | grep -Po '(?<=dev )(\S+)'
eth0
ifconfig
を実行すると、必要な情報が得られます。
アクティブなインターフェイスには_inet addr
_があり、送信されたデータのレコードが次のように表示されます。
RX bytes:1930741 (1.8 Mb) TX bytes:204768 (199.9 Kb)
_ip addr
_コマンドを使用することもでき、非アクティブなインターフェースはすべて_NO-CARRIER
_として指定されます。
コマンド ip route ls
はアクティブなルートとそのソースのリストを提供します:
caleburn: ~/ >ip route ls
192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.7
default via 192.168.10.254 dev eth0
次のコマンドを使用します。
$ route | grep default | awk '{print $8}'
enp0s3
以下のものを使用してください:
ip r | grep default
マシンに複数のインターフェース(私が想定している)がある場合、インターネットへの接続に使用されるインターフェースはありません。
接続先に応じて、システムはipテーブル(route
コマンドを実行したときに表示されるもの)を調べて次の希望/ルーターを見つけます。見つかった場合は、インターフェースを使用します関連付けられています。
つまり、@ torgeirの answer を参照してください。
Linux、Unix、Microsoft Windowsの一部のバージョン、およびその他の多くのオペレーティングシステムのさまざまなディストリビューションは、インターネットにアクセスするために1つのネットワークインターフェイスだけを使用することに限定されていません。多くのオペレーティングシステムは、インターネットに到達できる複数の有効なインターフェースを検出し、それぞれをインターネット(具体的には、最終的にインターネットに接続するゲートウェイ)にトラフィックを運ぶように設定します。 OSが外部ネットワークに到達しようとし、eth0
を使用して成功した場合、OSはそのインターフェースをルーティングテーブルに追加し、そのネットワークに関連付けます。 OSが同じ外部ネットワークに到達しようとし、eth1
を使用しても成功した場合は、そのインターフェイス(eth1
)も同じネットワークに到達するための追加の方法としてルーティングテーブルに追加します。これまでの他の投稿者は、ルーティングテーブルのメトリック値の重要性を考慮していませんでした。以下のルーティングテーブルは、2つの異なるインターフェイスeth0
とwlan0
を示しています。どちらも起動しており、オペレーティングシステムによってゲートウェイ192.168.1.1
へのデフォルトルートとして自動的に設定されており、オペレーティングシステムによって192.168.1.X
ネットワークへのルートが自動的に構築されています。このルーティングテーブル全体は、OSによって自動的に書き込まれました。私はそれを編集していません。ここに示されている違いは、有線イーサネットインターフェイス(eth0
)のメトリック(202)が低いため、自分のノード以外のノードへのトラフィックの多くがこのインターフェイスを介してルーティングされることです(メトリックが低いほど優先されます)。 )、自分のノード以外のノードへのトラフィックの残りは、ワイヤレスインターフェイス(wlan0
)経由でルーティングされます(メトリックは303と高く、OSにはあまり好まれません)。
pi@raspberrypi:~ $ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.1.1 0.0.0.0 UG 202 0 0 eth0
default 192.168.1.1 0.0.0.0 UG 303 0 0 wlan0
192.168.1.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 303 0 0 wlan0
両方のインターフェースは「インターネット」に到達するために使用されており、それらの使用は、以下のeth0とwlan0のバイトとパケットの統計でわかるように、「メトリック」値によって重み付けされます。
pi@raspberrypi:~ $ ip -s address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope Host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope Host
valid_lft forever preferred_lft forever
RX: bytes packets errors dropped overrun mcast
0 0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
0 0 0 0 0 0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether dc:a6:32:31:a2:c7 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.195/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
valid_lft 80787sec preferred_lft 69987sec
inet6 fe80::2f3f:3f1d:8c35:a05e/64 scope link
valid_lft forever preferred_lft forever
RX: bytes packets errors dropped overrun mcast
14341060 22393 0 0 0 971
TX: bytes packets errors dropped carrier collsns
1190274 10745 0 0 0 0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether dc:a6:32:31:a2:c8 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.193/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
valid_lft 80787sec preferred_lft 69987sec
inet6 fe80::4f31:5fcf:8f70:b5ca/64 scope link
valid_lft forever preferred_lft forever
RX: bytes packets errors dropped overrun mcast
4963408 7954 0 0 0 929
TX: bytes packets errors dropped carrier collsns
49371 235 0 0 0 0
OSによってeth0に多くのトラフィックが与えられていることは簡単にわかります。多くのオペレーティングシステムは、より高速な接続を持つ有線インターフェイスに低いメトリックを提供し、より低速な接続を持つ有線インターフェイスに高いメトリックを提供します。たとえば、eth0
とeth1
の両方が同じノードに接続しているが、eth0
が100 mb接続をネゴシエートし、eth1
が10 mb接続のみをネゴシエートした場合、eth0
には、eth1
よりも低いメトリックが与えられます。同様に、多くのオペレーティングシステムは、有線インターフェイスに低いメトリックを提供し、無線インターフェイスに高いメトリックを提供します。
ルーティングテーブルのエントリを作成/編集することにより、複数のインターフェイスを自動的に(OSに応じて)または手動でセットアップして、同じ外部ノードに到達できます。