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
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.
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)'
Bon mot:
ip route get 8.8.8.8 | sed -n 's/.*dev \([^\ ]*\) table.*/\1/p'
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
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
.
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
Utilisez cette commande:
$ route | grep default | awk '{print $8}'
enp0s3
utilisez celui ci-dessous:
ip r | grep default
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:
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.