web-dev-qa-db-ja.com

インターネットへの接続に使用しているインターフェイスを確認するにはどうすればよいですか?

私が持っています eth0およびwlan0ifconfigに従って、私はping google.com

rootではなく通常のユーザーで)どのインターフェイスがactiveであるかを確認するにはどうすればよいですか。

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

56
LanceBaynes

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列は、使用されているインターフェースを示します。

55
Job

基本的に this および this に基づいている私のバージョン:

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

そして、これは実験的に、macOSの場合:

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

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)'
11
Torgeir

一発ギャグ:

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

8
h0tw1r3

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

$ ip -4 route ls | grep default | grep -Po '(?<=dev )(\S+)'
eth0
7
EugeneP

ifconfigを実行すると、必要な情報が得られます。

アクティブなインターフェイスには_inet addr_があり、送信されたデータのレコードが次のように表示されます。

RX bytes:1930741 (1.8 Mb)  TX bytes:204768 (199.9 Kb)

_ip addr_コマンドを使用することもでき、非アクティブなインターフェースはすべて_NO-CARRIER_として指定されます。

6
jasonwryan

コマンド 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 
2
Shadur

次のコマンドを使用します。

$ route | grep default | awk '{print $8}'
enp0s3
1
Larry Catt

以下のものを使用してください:

ip r | grep default
0
akash

マシンに複数のインターフェース(私が想定している)がある場合、インターネットへの接続に使用されるインターフェースはありません。

接続先に応じて、システムはipテーブル(routeコマンドを実行したときに表示されるもの)を調べて次の希望/ルーターを見つけます。見つかった場合は、インターフェースを使用します関連付けられています。

つまり、@ torgeirの answer を参照してください。

  1. ドメインを指定(google.comとしてハードコードされています。これが回答の唯一の悪い点です)
  2. IPを解決します
  3. 使用するルート(したがってインターフェース)についてIPテーブルを調べます。
0
kdehairy

Linux、Unix、Microsoft Windowsの一部のバージョン、およびその他の多くのオペレーティングシステムのさまざまなディストリビューションは、インターネットにアクセスするために1つのネットワークインターフェイスだけを使用することに限定されていません。多くのオペレーティングシステムは、インターネットに到達できる複数の有効なインターフェースを検出し、それぞれをインターネット(具体的には、最終的にインターネットに接続するゲートウェイ)にトラフィックを運ぶように設定します。 OSが外部ネットワークに到達しようとし、eth0を使用して成功した場合、OSはそのインターフェースをルーティングテーブルに追加し、そのネットワークに関連付けます。 OSが同じ外部ネットワークに到達しようとし、eth1を使用しても成功した場合は、そのインターフェイス(eth1)も同じネットワークに到達するための追加の方法としてルーティングテーブルに追加します。これまでの他の投稿者は、ルーティングテーブルのメトリック値の重要性を考慮していませんでした。以下のルーティングテーブルは、2つの異なるインターフェイスeth0wlan0を示しています。どちらも起動しており、オペレーティングシステムによってゲートウェイ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に多くのトラフィックが与えられていることは簡単にわかります。多くのオペレーティングシステムは、より高速な接続を持つ有線インターフェイスに低いメトリックを提供し、より低速な接続を持つ有線インターフェイスに高いメトリックを提供します。たとえば、eth0eth1の両方が同じノードに接続しているが、eth0が100 mb接続をネゴシエートし、eth1が10 mb接続のみをネゴシエートした場合、eth0には、eth1よりも低いメトリックが与えられます。同様に、多くのオペレーティングシステムは、有線インターフェイスに低いメトリックを提供し、無線インターフェイスに高いメトリックを提供します。

ルーティングテーブルのエントリを作成/編集することにより、複数のインターフェイスを自動的に(OSに応じて)または手動でセットアップして、同じ外部ノードに到達できます。

0
Just Jeff