現在アクティブなもので、現在トラフィックを送受信しているネットワークインターフェイスの名前(eth0、wlan0など)を取得する必要があります。 WiFiに接続されている場合はwlan0になりますが、直接接続されている場合はeth0になります。または、システム上のネットワークデバイスとアクティブなネットワークデバイスに応じて、他の何か。これをどうやって見つけることができますか?
ターミナルを開き、コマンドを実行します:
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ですべての詳細を手動で設定します。
ハントアンドペックにping
は必要ありません。 ip link
;を使用しますifconfig
よりも詳細な情報があります。各インターフェイスは次のようなものを報告します
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
特定のトラフィックが送信されるインターフェースを把握する良い方法は、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)
同じ方法がインターネット上のネットワークだけでなく、他のネットワークでも機能することを忘れないでください。
もう少し詳しく知りたい場合は、jnettopを試してください。このツールは、端末での詳細なトラフィック監視を表示します。
Sudo apt-get install jnettop
一度インストールしたら、ターミナルにjnettopと入力します。