web-dev-qa-db-ja.com

現在アクティブなネットワークインターフェイスの名前を見つける方法

現在アクティブなもので、現在トラフィックを送受信しているネットワークインターフェイスの名前(eth0、wlan0など)を取得する必要があります。 WiFiに接続されている場合はwlan0になりますが、直接接続されている場合はeth0になります。または、システム上のネットワークデバイスとアクティブなネットワークデバイスに応じて、他の何か。これをどうやって見つけることができますか?

4
user779159

ターミナルを開き、コマンドを実行します:

ifconfig

アクティブなインターフェイスには、IPアドレスと、送受信されたバイトがあります。以下に例を示します。

eth0  Link encap:Ethernet  HWaddr xx:a8:6b:fe:06:xx
      inet addr:192.168.1.14  Bcast:192.168.1.255  Mask:255.255.255.0
      inet6 addr: fe80::eea8:6bff:fefe:696/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:449232 errors:0 dropped:0 overruns:0 frame:0
      TX packets:309483 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:633900275 (633.9 MB)  TX bytes:27944824 (27.9 MB)

イーサネットインターフェイスが使用されているかどうかを確認します。

ping -c3 -I eth0 www.google.com
ping: Warning: source address might be selected on device other than eth0.
PING www.google.com (74.125.228.145) from 192.168.1.100 eth0: 56(84) bytes of data.Wi-Fi
From Think410 (192.168.1.100) icmp_seq=1 Destination Host Unreachable
From Think410 (192.168.1.100) icmp_seq=2 Destination Host Unreachable
From Think410 (192.168.1.100) icmp_seq=3 Destination Host Unreachable

ワイヤレスインターフェイスが使用されていることを確認します。

ping -c3 -I wlan0 www.google.com
PING www.google.com (74.125.228.148) from 192.168.1.100 wlan0: 56(84) bytes of data.
64 bytes from iad23s17-in-f20.1e100.net (74.125.228.148): icmp_seq=1 ttl=50 time=37.5 ms
64 bytes from iad23s17-in-f20.1e100.net (74.125.228.148): icmp_seq=2 ttl=50 time=36.8 ms
64 bytes from iad23s17-in-f20.1e100.net (74.125.228.148): icmp_seq=3 ttl=50 time=35.9 ms

したがって、明らかに、インターネットトラフィックは現在、私のワイヤレスインターフェイスwlan0を介してルーティングされています。

イーサネットとワイヤレスの両方を同時に接続することができます。通常、Network Managerはそれを許可せず、一般的に高速で安全なため、ワイヤレスよりもイーサネットを優先します。 LANにイーサネットを使用し、WAN(インターネット)にワイヤレスを使用する場合、通常はNMを削除し、/ etc/network/interfacesですべての詳細を手動で設定します。

7
chili555

ハントアンドペックにpingは必要ありません。 ip link;を使用しますifconfigよりも詳細な情報があります。各インターフェイスは次のようなものを報告します

  • LOOPBACK、アクティブを意味しますが、外部(有線または無線)にはなりません
  • NO-CARRIER、外部を意味しますが、信号は生成されません
  • ブロードキャスト、外部を意味し、アクティブです
  • LOWER-UP、つまりPHYが有効になっていることを意味します

LOWER-UPで2つ以上の外部インターフェイスを使用できますが、一般的には悪い考えです。これは、ループバック(LOWER_UPに注意)、ダウンイーサネット、wlan0がアップして信号を生成、wlan4(USB wifi)がアップ、信号を生成しないラップトップ(wlan4.monモニターモードがBSSのすべてのステーションをスニッフィングします(LOWER-UPに注意))です。 wlan4.monは送信しません。

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 24:b6:fd:24:59:b9 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 4c:eb:42:32:0c:9e brd ff:ff:ff:ff:ff:ff
26: wlan4: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
    link/ether 00:26:f2:b3:d7:93 brd ff:ff:ff:ff:ff:ff
27: wlan4.mon: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN qlen 1000
    link/ieee802.11/radiotap 00:26:f2:b3:d7:93 brd ff:ff:ff:ff:ff:ffter code here
4
dturvene

特定のトラフィックが送信されるインターフェースを把握する良い方法は、ip route getを使用することです。たとえば、Google(8.8.8.8)またはCloudflare(1.1.1.1)DNSサーバーを使用して、インターネットトラフィックが通過するインターフェースを特定します。

$ ip route get 1.1.1.1
1.1.1.1 via 192.168.2.1 dev eth0 src 192.168.2.155 uid 0
    cache

次に、インターネットに使用されるインターフェイスで変数を設定するなどの操作を実行できます。

LANIFACE=$(ip route get 1.1.1.1 | grep -Po '(?<=dev\s)\w+' | cut -f1 -d ' ')

次に、インターフェイスのIPアドレスを取得することもできます。

LANIP=$(ip addr show "$LANIFACE" | grep "inet " | cut -d '/' -f1 | cut -d ' ' -f6)

同じ方法がインターネット上のネットワークだけでなく、他のネットワークでも機能することを忘れないでください。

3
rkantos

もう少し詳しく知りたい場合は、jnettopを試してください。このツールは、端末での詳細なトラフィック監視を表示します。

Sudo apt-get install jnettop

一度インストールしたら、ターミナルにjnettopと入力します。

1
A1 Computers