Jak mogę sprawdzić, z którego interfejsu sieciowego korzysta mój komputer?

22

Na MBP (OS X 10.6.2) mam konfiguracje przewodowego Ethernetu i bezprzewodowego lotniska skonfigurowane do korzystania z tego samego statycznego IP do mojego routera (np. Jak opisano w http://forums.macrumors.com/archive/index.php/t-708685.html ). Otrzymałem również zamówienie serwisowe, aby połączenie przewodowe znajdowało się powyżej lotniska (np. Jak opisano w punkcie Mac OS X automatycznie wyłącza port lotniczy, jeśli kabel Ethernet jest podłączony ).

Wydaje się to „działać”: otwarte połączenie ssh ze zdalną lokalizacją pozostaje aktywne, gdy podłączam i odłączam kabel Ethernet. Ponieważ jednak karta lotniska pozostaje aktywna (i połączona z routerem) bez względu na to, czy istnieje połączenie przewodowe, jak mogę stwierdzić, że interfejs przewodowy jest rzeczywiście „aktywnym” połączeniem, gdy jest dostępne? Ponieważ adres IP jest taki sam dla obu, jest to gwarancja, że ​​interfejs bezprzewodowy nie może być użytym? Czy jest jakiś inny sposób sprawdzenia, czy ten interfejs jest używany?

PS. Zamierzam opublikować (częściową) odpowiedź, gdy tylko to opublikuję, ponieważ akt napisania tego i sprawdzenia wszystkich moich faktów prowadzi mnie do pewnych spostrzeżeń. (Bardziej interesująca i nieodebrana część jest pogrubiona powyżej.)

Ether
źródło

Odpowiedzi:

24

Ostateczne odniesienie do pytań takich jak „Który interfejs będzie używany do osiągnięcia hosta w.x.y.z?” w dowolnym czasie lub sytuacji należy odwołać się do tabeli routingu.

[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 

Włączono zarówno en0, jak i en1, a en0 jest pierwszym w Zleceniu serwisowym. Odłączenie mojej sieci Ethernet, bez wprowadzania innych zmian, to samo polecenie daje:

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
źródło
11

Używam tego:

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
źródło
2
iface(){ route get 0.0.0.0 2>/dev/null | awk '/interface: / {print $2}'; }
mralexgray
7

Oto wysypisko ifconfig -a w każdej sytuacji (podkreślę później różnice):

Kabel Ethernet jest podłączony:

lo0: flags=8049 mtu 16384
        inet6 ::1 prefixlen 128
        inet6 xxxx::1%lo0 prefixlen 64 scopeid 0x1
        inet 127.0.0.1 netmask 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
        ether xx:xx:xx:xx:xx:xx
        media: autoselect (100baseTX ) status: active
        supported media: none autoselect 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
        media: autoselect  status: inactive
        supported media: autoselect 
en1: flags=8863 mtu 1500
        inet6 xxxx%en1 prefixlen 64 scopeid 0x6
        inet 192.168.0.110 netmask 0xffffff00 broadcast 192.168.0.255
        ether xx:xx:xx:xx:xx:xx
        media: autoselect status: active
        supported media: autoselect

Kabel Ethernet jest odłączony:

lo0: flags=8049 mtu 16384
        inet6 ::1 prefixlen 128
        inet6 xxxx::1%lo0 prefixlen 64 scopeid 0x1
        inet 127.0.0.1 netmask 0xff000000
gif0: flags=8010 mtu 1280
stf0: flags=0 mtu 1280
en0: flags=8863 mtu 1500
        ether xx:xx:xx:xx:xx:xx
        media: autoselect status: inactive
        supported media: none autoselect 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
        media: autoselect  status: inactive
        supported media: autoselect 
en1: flags=8863 mtu 1500
        inet6 xxxx%en1 prefixlen 64 scopeid 0x6
        inet 192.168.0.110 netmask 0xffffff00 broadcast 192.168.0.255
        ether xx:xx:xx:xx:xx:xx
        media: autoselect status: active
        supported media: autoselect

diff plugged unplugged pokazuje, że połączenie przewodowe staje się aktywne, gdy jest dostępne:

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
Ether
źródło
1
Dodatek: za pośrednictwem rozszerzenia „MenuMeters” innej firmy ( ragingmenace.com/software/menumeters ), można zobaczyć, który jest „aktywny” interfejs, a także przepustowość wykorzystywaną we wszystkich interfejsach, co wyraźnie pokazuje, że aktywny interfejs rzeczywiście przełącza się prawidłowo (zgodnie z potrzebami), gdy połączenie przewodowe jest podłączone i usuwane.
Ether
6

Kilka rzeczy. Mac zawsze będzie korzystał z połączeń sieciowych w kolejności wymienionej w profilu „Połączenia sieciowe”. Na przykład, jeśli sieć Ethernet znajduje się na szczycie sieci bezprzewodowej, przejmie ją Ethernet.

Nie wiem, jak bardzo działa SSH, ale z mojego doświadczenia. Jeśli jedno połączenie zawiedzie lub rozłączy się, SSH użyje drugiego połączenia.

Jeśli naprawdę chcesz sprawdzić, czy połączenia są aktywne, powinieneś użyć narzędzia do monitorowania przepustowości. Świetnym jest iStat ( http://www.islayer.com/apps/istatmenus/ ).

Steven Lu
źródło
1
Przypadkowo przeczytałem zbyt szybko, tak ... powiedziałem, że to zamówienie na usługi. Powinieneś naprawdę zajrzeć do monitora przepustowości, aby zobaczyć, co dzieje się między wszystkimi twoimi połączeniami.
Steven Lu
ssh był tym, czego używałem do testowania sieci, ale tak naprawdę każda sesja TCP (trwała) mogłaby to zrobić.
Ether
0

Użyłem rady, aby adresy IP były takie same dla Ethernetu i Wi-Fi.

Zainicjowałem tworzenie kopii zapasowej TimeMachine i w Network Utility & gt; Info & gt; en0 Ethernet Widziałem, że tysiące pakietów przesuwało się przez połączenie Ethernet, podczas gdy Network Utility & gt; Info & gt; en1 WiFi nic się nie poruszało.

Dziękuję za wskazanie mi właściwego kierunku. Po zakończeniu tworzenia kopii zapasowej TimeMachine powrócę do oddzielnych adresów IP i zobaczę, czy Mac nadal automatycznie przenosi wszystko przez Ethernet.

Pierwotne pytanie brzmiało: „Jak mogę określić, z którego interfejsu sieciowego korzysta mój komputer?” Narzędzie sieciowe działało dla mnie.

Macbook Pro 17 "W połowie 2010 roku, Mountain Lion

Gigapig
źródło