web-dev-qa-db-fra.com

Comment savoir quelle interface j'utilise pour me connecter à Internet?

J'ai eth0 et wlan0 selon ifconfig et je peux ping google.com.

Comment puis-je savoir (avec un utilisateur normal, pas root) quelle interface est active, comme dans quelle interface le ping (ou autre chose, ping n'est pas obligatoire) a-t-il utilisé?

J'utilise Ubuntu 11.04 ou Fedora 14

56
LanceBaynes

Vous pouvez utiliser route pour trouver votre itinéraire par défaut:

$ 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

La colonne Iface dans la ligne avec la destination default vous indique quelle interface est utilisée.

55
Job

Ma version qui est essentiellement basée sur this et this :

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

Et cela, expérimentalement , pour macOS:

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

Sur les systèmes 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

Bon mot:

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

8
h0tw1r3

Obtenez l'interface réseau par défaut généralement utilisée pour acheminer vers Internet "restant" en face de DMZ, réseau privé, VM Host etc. qui sont généralement routés explicitement.

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

L'exécution de ifconfig vous donnera les informations dont vous avez besoin.

L'interface active aura un inet addr Et affichera un enregistrement des données transmises, comme ceci:

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

Vous pouvez également utiliser la commande ip addr Et toutes les interfaces inactives seront désignées comme ayant: NO-CARRIER.

6
jasonwryan

La commande ip route ls donnera une liste des itinéraires actifs et de leurs sources:

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

Utilisez cette commande:

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

utilisez celui ci-dessous:

ip r | grep default
0
akash

Si votre machine a plusieurs interfaces (ce que je suppose), il n'y a pas une seule interface qui sera utilisée pour se connecter à Internet.

Selon la destination à laquelle vous vous connectez, votre système consultera la table ip (celle affichée lorsque vous exécutez la commande route) pour trouver le prochain espoir/routeur, lorsqu'il en trouvera un, il utilisera l'interface associé avec.

Cela dit, veuillez vous référer à @ torgeir's answer car il fait exactement cela:

  1. Étant donné un domaine (codé en dur comme google.com, qui est le seul mauvais point dans la réponse)
  2. Résout c'est ip
  3. Consulte la table ip pour l'itinéraire à utiliser (et donc l'interface).
0
kdehairy

Différentes distributions de Linux, Unix, certaines versions de Microsoft Windows et de nombreux autres systèmes d'exploitation ne se limitent pas à utiliser une seule interface réseau pour accéder à Internet. De nombreux systèmes d'exploitation détectent plus d'une interface valide, capable d'accéder à Internet, et configurent chacun d'eux pour acheminer le trafic vers Internet (en particulier, les passerelles qui se connectent finalement à Internet). Si le système d'exploitation essaie d'atteindre un réseau externe et réussit à utiliser eth0, il ajoutera cette interface à la table de routage et la liera à ce réseau. Si le système d'exploitation essaie d'atteindre le même réseau externe et réussit également en utilisant eth1, il ajoutera également cette interface (eth1) dans la table de routage comme moyen supplémentaire d'atteindre ce même réseau. Jusqu'à présent, d'autres affiches n'ont pas considéré l'importance des valeurs métriques dans une table de routage. Ma table de routage, ci-dessous, montre deux interfaces différentes, eth0 et wlan0. Les deux sont actifs, les deux ont été définis automatiquement par le système d'exploitation comme routes par défaut vers la passerelle 192.168.1.1, et les deux ont eu un itinéraire créé automatiquement par le système d'exploitation vers 192.168.1.X réseau. Cette table de routage entière a été écrite automatiquement par le système d'exploitation. Aucune modification n'a été apportée par moi. La différence illustrée ici est que l'interface Ethernet filaire (eth0) a une métrique inférieure (202), et donc plus de mon trafic vers des nœuds au-delà du mien sera acheminé via cette interface (il est préféré par la métrique inférieure), tandis que le reste de mon trafic vers des nœuds au-delà de ma propre volonté être acheminé via l'interface sans fil (wlan0) (il a une métrique plus élevée de 303, et est donc moins préféré par l'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

Les deux interfaces sont utilisées pour atteindre "Internet", et leur utilisation est pondérée par les valeurs "Métriques", comme on peut le voir dans les statistiques d'octets et de paquets pour eth0 et wlan0 ci-dessous:

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       

Il est facile de voir que eth0 reçoit plus de trafic de l'OS. De nombreux systèmes d'exploitation donneront une métrique inférieure à une interface filaire qui a une connexion plus rapide et une métrique plus élevée à une interface filaire avec une connexion plus lente. Par exemple, si eth0 et eth1 les deux se connectent au même nœud, mais eth0 a négocié une connexion de 100 Mo et eth1 a uniquement négocié une connexion de 10 Mo, eth0 recevrait une métrique inférieure à eth1. De même, de nombreux systèmes d'exploitation donneront une métrique inférieure à une interface filaire et une métrique supérieure à une interface sans fil.

Plusieurs interfaces peuvent être configurées automatiquement (selon le système d'exploitation), ou manuellement, pour atteindre le même nœud externe en créant/éditant des entrées dans la table de routage.

0
Just Jeff