Comment savoir quelle interface réseau mon ordinateur utilise?

24

Sur un MBP (OS X 10.6.2), j'ai les configurations Ethernet filaire et aéroport sans fil installées pour utiliser la même IP statique sur mon routeur (par exemple, comme décrit sur http://forums.macrumors.com/archive/index .php / t-708685.html ). J'ai également configuré l'ordre de service pour que la connexion filaire soit au-dessus de l'aéroport (par exemple, comme décrit sur Mac OS X, éteignez automatiquement l'aéroport si le câble Ethernet est branché ).

Cela semble "fonctionner": une connexion ssh ouverte à un emplacement distant reste active pendant que je branche et débranche le câble Ethernet. Cependant, étant donné que la carte Airport reste active (et connectée au routeur), que la connexion filaire soit présente ou non, comment savoir si l'interface filaire est en fait la connexion "active" lorsqu'elle est disponible? Étant donné que l'adresse IP est la même pour les deux, est-ce une garantie que l'interface sans fil ne peut pas être utilisée? Existe-t-il un autre moyen de savoir si cette interface est utilisée?

PS. Je vais poster une réponse (partielle) dès que je posterai ceci, car le fait d'écrire ceci et de vérifier tous mes faits m'amène à quelques idées. (La partie la plus intéressante et sans réponse est en gras ci-dessus.)

Éther
la source

Réponses:

26

La référence définitive pour des questions telles que "Quelle interface sera utilisée pour atteindre l'hôte wxyz?" pour toute heure ou situation donnée, il faut se référer à la table de routage.

[mini-nevie:~] nevinwilliams% route get 10.10.10.10
   route to: 10.10.10.10
destination: default
       mask: default
    gateway: 192.168.2.1
  interface: en0
      flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
       0         0         0         0         0         0      1500         0 

J'ai à la fois en0 et en1 activé, et en0 est le premier dans l'ordre de service. Débrancher mon ethernet, sans faire d'autres changements, la même commande donne:

mini-nevie:~] nevinwilliams% route get 10.10.10.10
   route to: 10.10.10.10
destination: default
       mask: default
    gateway: 192.168.2.1
  interface: en1
      flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
       0         0         0         0         0         0      1500         0 
Nevin Williams
la source
12

J'utilise ceci:

if=$(route -n get 0.0.0.0 2>/dev/null | awk '/interface: / {print $2}')

if [ -n "$if" ]; then
    echo "Default route is through interface $if"
else
    echo "No default route found"
fi
mivk
la source
2
iface(){ route get 0.0.0.0 2>/dev/null | awk '/interface: / {print $2}'; }
mralexgray
8

Voici un vidage de ifconfig -adans chaque situation (je soulignerai les différences par la suite):

Le câble Ethernet est branché:

lo0: drapeaux = 8049 mtu 16384
        inet6 :: 1 prefixlen 128
        inet6 xxxx :: 1% lo0 prefixlen 64 scopeid 0x1
        inet 127.0.0.1 masque de réseau 0xff000000
gif0: drapeaux = 8010 mtu 1280
stf0: drapeaux = 0 mtu 1280
en0: drapeaux = 8863 mtu 1500
        inet6 xxxx% en0 prefixlen 64 scopeid 0x4
        inet 192.168.0.110 netmask 0xffffff00 broadcast 192.168.0.255
        éther xx: xx: xx: xx: xx: xx
        média: sélection automatique (100baseTX) statut: actif
        support pris en charge: aucun sélection automatique 10baseT / UTP 10baseT / UTP 10baseT / UTP 10baseT / UTP 100baseTX 100baseTX 100baseTX 100baseTX 1000baseT 1000baseT 1000baseT 
fw0: drapeaux = 8863 mtu 4078
        lladdr xx: xx: xx: xx: xx: xx
        média: statut de sélection automatique: inactif
        média pris en charge: sélection automatique 
en1: drapeaux = 8863 mtu 1500
        inet6 xxxx% en1 prefixlen 64 scopeid 0x6
        inet 192.168.0.110 netmask 0xffffff00 broadcast 192.168.0.255
        éther xx: xx: xx: xx: xx: xx
        média: statut de sélection automatique: actif
        média pris en charge: sélection automatique

Le câble Ethernet est débranché:

lo0: drapeaux = 8049 mtu 16384
        inet6 :: 1 prefixlen 128
        inet6 xxxx :: 1% lo0 prefixlen 64 scopeid 0x1
        inet 127.0.0.1 masque de réseau 0xff000000
gif0: drapeaux = 8010 mtu 1280
stf0: drapeaux = 0 mtu 1280
en0: drapeaux = 8863 mtu 1500
        éther xx: xx: xx: xx: xx: xx
        média: statut de sélection automatique: inactif
        support pris en charge: aucun sélection automatique 10baseT / UTP 10baseT / UTP 10baseT / UTP 10baseT / UTP 100baseTX 100baseTX 100baseTX 100baseTX 1000baseT 1000baseT 1000baseT 
fw0: drapeaux = 8863 mtu 4078
        lladdr xx: xx: xx: xx: xx: xx
        média: statut de sélection automatique: inactif
        média pris en charge: sélection automatique 
en1: drapeaux = 8863 mtu 1500
        inet6 xxxx% en1 prefixlen 64 scopeid 0x6
        inet 192.168.0.110 netmask 0xffffff00 broadcast 192.168.0.255
        éther xx: xx: xx: xx: xx: xx
        média: statut de sélection automatique: actif
        média pris en charge: sélection automatique

diff plugged unplugged indique que la connexion filaire devient active lorsqu'elle est disponible:

8,9d7
<   inet6 xxxx%en0 prefixlen 64 scopeid 0x4 
<   inet 192.168.0.110 netmask 0xffffff00 broadcast 192.168.0.255
11c9
<   media: autoselect (100baseTX <full-duplex,flow-control>) status: active
---
>   media: autoselect status: inactive
Éther
la source
1
Addendum: grâce à l'extension tierce "MenuMeters" ( ragingmenace.com/software/menumeters ), il est possible de voir quelle est l'interface "active" ainsi que la bande passante utilisée sur toutes les interfaces, ce qui indique clairement que l'actif l'interface change en effet correctement (comme souhaité) lorsque la connexion filaire est branchée et retirée.
Ether
6

Un certain nombre de choses. Mac utilisera toujours les connexions réseau dans l'ordre indiqué dans votre profil "Connexions réseau". Par exemple, si Ethernet est au-dessus de Wireless, Ethernet prendra le relais.

Je ne sais pas trop comment SSH fonctionne, mais d'après mon expérience. Si une connexion échoue ou se déconnecte, SSH utilisera alors l'autre connexion.

Si vous voulez vraiment voir si les connexions sont actives, vous devez utiliser un utilitaire de surveillance de la bande passante. Un excellent est iStat ( http://www.islayer.com/apps/istatmenus/ ).

Steven Lu
la source
1
J'ai accidentellement lu trop vite, ouais ... ce que j'ai dit était un ordre de service. Vous devriez vraiment jeter un œil au moniteur de bande passante pour voir ce qui se passe entre toutes vos connexions.
Steven Lu
ssh était ce que j'utilisais pour tester le réseau, mais vraiment n'importe quelle session TCP (persistante) ferait l'affaire.
Ether
0

J'ai utilisé les conseils pour que les adresses IP soient les mêmes pour Ethernet et WiFi, définissez l'ordre de service comme suggéré, et j'ai simplement utilisé Network Utility> Info sur en0 et en1.

J'ai lancé une sauvegarde TimeMachine et sous Network Utility> Info> en0 Ethernet, je pouvais voir que des milliers de paquets se déplaçaient via la connexion Ethernet, tandis que Network Utility> Info> en1 WiFi, rien ne bougeait.

Merci de m'avoir fait pointer dans la bonne direction. Une fois la sauvegarde TimeMachine terminée, je reviens à des adresses IP distinctes et je vérifie si Mac déplace toujours tout via Ethernet.

La question initiale était "Comment puis-je savoir quelle interface réseau mon ordinateur utilise?" L'utilitaire réseau a fonctionné pour moi.

Macbook Pro 17 "mi-2010, Mountain Lion

Gigapig
la source