web-dev-qa-db-fra.com

Comment trouver le nom de l'interface réseau actuellement active?

Je dois obtenir le nom de l'interface réseau (par exemple, eth0, wlan0) qui est actuellement active, celle qui envoie et reçoit le trafic pour le moment. Quand il est connecté au WiFi, ce sera wlan0 mais quand il sera connecté directement, ce sera eth0. Ou quelque chose d'autre, en fonction des périphériques réseau sur le système et de celui qui est actif. Comment puis-je savoir cela?

4
user779159

Ouvrez un terminal et lancez la commande:

ifconfig

L'interface active aura une adresse IP et les octets transmis et reçus. Voici un exemple:

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)

Vérifiez si l'interface Ethernet est utilisée:

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

Vérifiez que l'interface sans fil est utilisée:

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

Donc, évidemment, le trafic Internet est actuellement acheminé via wlan0, mon interface sans fil.

Il est possible de connecter simultanément Ethernet et sans fil. Normalement, Network Manager l’interdit, préférant Ethernet à la connexion sans fil, car il est généralement plus rapide et plus sécurisé. Si vous voulez utiliser Ethernet pour le réseau local et sans fil pour le WAN (Internet), vous devez généralement supprimer NM et définir manuellement tous les détails dans/etc/network/interfaces.

7
chili555

Pas besoin de ping pour chasser et pecker. Utilisez ip link; il a plus d'informations germanes que ifconfig. Chaque interface signalera quelque chose comme

  • LOOPBACK, ce qui signifie actif mais jamais externe (filaire ou sans fil)
  • NO-CARRIER, ce qui signifie externe mais aucun signal n'est généré
  • BROADCAST, ce qui signifie externe et est actif
  • LOWER-UP, ce qui signifie que PHY est activé

Vous pouvez avoir deux interfaces externes ou plus avec LOWER-UP mais généralement une mauvaise idée. Voici mon ordinateur portable avec bouclage (remarque LOWER_UP), Ethernet, wlan0 et générant un signal, wlan4 (USB wifi) UP mais ne générant pas de signal, mode moniteur wlan4.mon reniflant toutes les stations sur BSS (avis LOWER-UP). wlan4.mon ne transmet pas.

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

Un bon moyen de déterminer l'interface utilisée par un trafic particulier consiste à utiliser ip route get Utilisez simplement des serveurs DNS tels que Google (8.8.8.8) ou Cloudflare (1.1.1.1) pour déterminer quelle interface le trafic Internet traverserait:

$ 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

Ensuite, vous pouvez faire des choses comme définir une variable avec l’interface utilisée pour Internet:

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

Ensuite, vous pouvez également obtenir l'adresse IP de l'interface:

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

N'oubliez pas que la même méthode peut également fonctionner pour d'autres réseaux, pas seulement sur Internet.

3
rkantos

Si vous voulez un peu plus de détails, essayez jnettop, cet outil vous montre une surveillance détaillée du trafic dans le terminal.

Sudo apt-get install jnettop

une fois installé tapez simplement jnettop dans le terminal

1
A1 Computers