Как узнать название активного на данный момент сетевого интерфейса?

Мне нужно получить имя сетевого интерфейса (например, eth0, wlan0), который является активным в данный момент, тот, который отправляет и получает трафик в данный момент. Когда он подключен к WiFi, это будет wlan0, но когда он подключен напрямую, это будет eth0. Или что-то еще, в зависимости от сетевых устройств в системе и от того, какое из них активно. Как я могу это выяснить?

4
задан 14 January 2014 в 22:30

4 ответа

Откройте терминал и выполните команду:

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)

Проверьте, используется ли интерфейс Ethernet:

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.

Возможно одновременное подключение как к сети Ethernet, так и к беспроводной сети. Обычно Network Manager запрещает это, предпочитая Ethernet по беспроводному каналу, потому что он, как правило, быстрее и безопаснее. Если кто-то хочет использовать Ethernet для локальной сети и беспроводную для WAN (Интернет), он обычно удаляет NM и устанавливает все детали вручную в /etc/network/interfaces.

.
0
ответ дан 14 January 2014 в 22:30

Нет необходимости для ping охотиться и клевать. Используйте ip link; в нем больше информации, чем в ifconfig. Каждый интерфейс сообщает что-то вроде

  • LOOPBACK, что означает активный, но никогда не становится внешним (проводной или беспроводной)
  • NO-CARRIER, что означает внешний, но не генерируемый сигнал
  • BROADCAST, что означает внешний и является активным
  • LOWER-UP, что означает, что PHY включен

У вас может быть два или более внешних интерфейса с LOWER-UP, но обычно это плохая идея. Вот мой ноутбук с обратной связью (обратите внимание на LOWER_UP), отключен Ethernet, включен wlan0 и генерирует сигнал, wlan4 (USB wifi) UP, но НЕ генерирует сигнал, режим мониторинга 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
0
ответ дан 14 January 2014 в 22:30
  • 1
    возможно, но мы можем отправить простой набор команды для этот и сообщить пользователю, что возможно сделать всегда (gui и cli) – user3417815 5 July 2015 в 23:23

Хороший способ выяснить интерфейс, куда будет направляться конкретный трафик, - это использовать ip route get Просто используйте, скажем, серверы Google (8.8.8.8) или Cloudflare (1.1.1.1), чтобы выяснить, через какой интерфейс будет проходить интернет-трафик. :

$ 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)
0
ответ дан 14 January 2014 в 22:30

Если вы хотите немного больше подробностей, попробуйте jnettop, этот инструмент покажет вам подробный мониторинг трафика в терминале.

sudo apt-get install jnettop

после установки просто введите jnettop в терминал

0
ответ дан 14 January 2014 в 22:30
  • 1
    да, таким образом, общий вопрос. конечно, пользователь должен искать, прежде спрашивают что-то. – user3417815 5 July 2015 в 23:25

Другие вопросы по тегам:

Похожие вопросы: