Wie kann ich feststellen, welche Netzwerkschnittstelle mein Computer verwendet?

24

Auf einem MBP (OS X 10.6.2) sind die Konfigurationen für kabelgebundenes Ethernet und kabellose Flughäfen so eingerichtet, dass sie dieselbe statische IP-Adresse für meinen Router verwenden (z. B. wie unter http://forums.macrumors.com/archive/index beschrieben) .php / t-708685.html ). Ich habe auch den Service-Auftrag so eingerichtet, dass die Kabelverbindung über dem Flughafen liegt (z. B. wird der Flughafen unter Mac OS X automatisch ausgeschaltet, wenn ein Ethernet-Kabel angeschlossen ist ).

Dies scheint zu "funktionieren": Eine offene SSH-Verbindung zu einem Remote-Standort bleibt bestehen, während ich das Ethernet-Kabel ein- und ausstecke. Da die Flughafenkarte jedoch unabhängig davon, ob eine Kabelverbindung vorhanden ist oder nicht, aktiv bleibt (und mit dem Router verbunden ist), kann ich feststellen, dass die Kabelschnittstelle tatsächlich die "aktive" Verbindung ist, wenn sie verfügbar ist. Ist dies eine Garantie dafür, dass die drahtlose Schnittstelle nicht verwendet werden kann, da die IP-Adresse für beide gleich ist ? Gibt es eine andere Möglichkeit, festzustellen, ob diese Schnittstelle verwendet wird?

PS. Ich werde eine (teilweise) Antwort posten, sobald ich dies poste, da der Akt des Aufschreibens und Überprüfens aller meiner Fakten mich zu einigen Einsichten führt. (Der interessantere und unbeantwortete Teil ist oben fett gedruckt.)

Äther
quelle

Antworten:

26

Die endgültige Referenz für Fragen wie "Welche Schnittstelle wird verwendet, um Host wxyz zu erreichen?" Beziehen Sie sich für eine bestimmte Zeit oder Situation auf die Routing-Tabelle.

[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 

Ich habe sowohl en0 als auch en1 aktiviert und en0 ist der erste in der Serviceauftrag. Wenn Sie das Ethernet ausstecken und keine weiteren Änderungen vornehmen, erhalten Sie den folgenden Befehl:

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
quelle
12

Ich benutze das:

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
quelle
2
iface(){ route get 0.0.0.0 2>/dev/null | awk '/interface: / {print $2}'; }
Mralexgray
8

Hier ist ein Dump für ifconfig -ajede Situation (ich werde die Unterschiede danach hervorheben):

Ethernet-Kabel ist eingesteckt:

lo0: flags = 8049 mtu 16384
        inet6 :: 1 Präfix 128
        inet6 xxxx :: 1% lo0 prefixlen 64 scopeid 0x1
        inet 127.0.0.1 Netzmaske 0xff000000
gif0: flags = 8010 mtu 1280
stf0: flags = 0 mtu 1280
en0: flags = 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
        Medien: Autoselect (100baseTX) Status: Aktiv
        Unterstützte Medien: Keine Automatische Auswahl von 10baseT / UTP 10baseT / UTP 10baseT / UTP 10baseT / UTP 100baseTX 100baseTX 100baseTX 100baseTX 1000baseT 1000baseT 1000baseT 
fw0: flags = 8863 mtu 4078
        lladdr xx: xx: xx: xx: xx: xx
        Medien: AutoAuswahl Status: inaktiv
        Unterstützte Medien: automatische Auswahl 
en1: flags = 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
        Medien: AutoAuswahl Status: Aktiv
        Unterstützte Medien: automatische Auswahl

Ethernet-Kabel ist nicht angeschlossen:

lo0: flags = 8049 mtu 16384
        inet6 :: 1 Präfix 128
        inet6 xxxx :: 1% lo0 prefixlen 64 scopeid 0x1
        inet 127.0.0.1 Netzmaske 0xff000000
gif0: flags = 8010 mtu 1280
stf0: flags = 0 mtu 1280
en0: flags = 8863 mtu 1500
        Äther xx: xx: xx: xx: xx: xx
        Medien: AutoAuswahl Status: inaktiv
        Unterstützte Medien: Keine Automatische Auswahl von 10baseT / UTP 10baseT / UTP 10baseT / UTP 10baseT / UTP 100baseTX 100baseTX 100baseTX 100baseTX 1000baseT 1000baseT 1000baseT 
fw0: flags = 8863 mtu 4078
        lladdr xx: xx: xx: xx: xx: xx
        Medien: AutoAuswahl Status: inaktiv
        Unterstützte Medien: automatische Auswahl 
en1: flags = 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
        Medien: AutoAuswahl Status: Aktiv
        Unterstützte Medien: automatische Auswahl

diff plugged unplugged zeigt an, dass die Kabelverbindung aktiv wird, wenn sie verfügbar ist:

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
quelle
1
Nachtrag: Über die Drittanbietererweiterung "MenuMeters" ( ragingmenace.com/software/menumeters ) ist ersichtlich , welche Schnittstelle "aktiv" ist und welche Bandbreite über alle Schnittstellen hinweg verwendet wird, wodurch deutlich wird, dass die aktive Schnittstelle aktiv ist Die Schnittstelle schaltet tatsächlich ordnungsgemäß (wie gewünscht), wenn die Kabelverbindung angeschlossen und entfernt wird.
Ether
6

Einige Sachen. Der Mac verwendet die Netzwerkverbindungen immer in der Reihenfolge, in der sie in Ihrem Profil "Netzwerkverbindungen" aufgeführt sind. Befindet sich zum Beispiel Ethernet über Wireless, übernimmt Ethernet.

Ich bin mir nicht sicher, wie SSH so funktioniert, aber aus meiner Erfahrung. Wenn eine Verbindung ausfällt oder getrennt wird, verwendet SSH die andere Verbindung.

Wenn Sie wirklich sehen möchten, ob die Verbindungen aktiv sind, sollten Sie ein Dienstprogramm zur Bandbreitenüberwachung verwenden. Ein großartiger ist iStat ( http://www.islayer.com/apps/istatmenus/ ).

Steven Lu
quelle
1
Ich habe versehentlich zu schnell gelesen, ja ... was ich sagte, war Serviceauftrag. Sie sollten wirklich einen Blick in den Bandbreitenmonitor werfen, um zu sehen, was zwischen all Ihren Verbindungen vor sich geht.
Steven Lu
ssh war das, was ich zum Testen des Netzwerks verwendete, aber eigentlich würde jede TCP-Sitzung (persistent) funktionieren.
Ether
0

Ich habe den Rat verwendet, um die IP-Adressen für Ethernet und WiFi gleich zu machen, die Servicereihenfolge wie vorgeschlagen festzulegen und gerade Network Utility> Info für en0 und en1 verwendet.

Ich habe ein TimeMachine-Backup gestartet und konnte unter Netzwerkdienstprogramm> Info> en0 Ethernet feststellen, dass sich Tausende von Paketen über die Ethernet-Verbindung bewegten, während Netzwerkdienstprogramm> Info> en1 WiFi sich nichts bewegte.

Vielen Dank, dass Sie mich in die richtige Richtung gelenkt haben. Wenn die TimeMachine-Sicherung abgeschlossen ist, greife ich auf separate IP-Adressen zurück und überprüfe, ob der Mac immer noch alles automatisch über Ethernet überträgt.

Die ursprüngliche Frage lautete: "Wie kann ich feststellen, welche Netzwerkschnittstelle mein Computer verwendet?" Netzwerkdienstprogramm arbeitete für mich.

Macbook Pro 17 "Mitte 2010, Mountain Lion

Gigapig
quelle