¿Cómo puedo saber qué interfaz de red está usando mi computadora?

24

En un MBP (OS X 10.6.2), tengo configuradas las configuraciones de Ethernet cableada e inalámbrica del aeropuerto para usar la misma IP estática en mi enrutador (por ejemplo, como se describe en http://forums.macrumors.com/archive/index .php / t-708685.html ). También he configurado la orden de servicio para que la conexión por cable esté por encima del aeropuerto (por ejemplo, como se describe en Mac OS X, apaga automáticamente el aeropuerto si el cable de Ethernet está enchufado ).

Esto parece "funcionar": una conexión ssh abierta a una ubicación remota permanece activa mientras enchufo y desconecto el cable de ethernet. Sin embargo, dado que la tarjeta del aeropuerto permanece activa (y conectada al enrutador) independientemente de si la conexión por cable está presente, ¿cómo puedo saber que la interfaz por cable es realmente la conexión "activa" cuando está disponible? Dado que la dirección IP es la misma para ambos, ¿es esto una garantía de que la interfaz inalámbrica no se puede usar? ¿Hay alguna otra forma de saber si esta interfaz está en uso?

PD. Voy a publicar una respuesta (parcial) tan pronto como publique esto, ya que el hecho de escribir esto y verificar todos mis hechos me lleva a algunas ideas. (La parte más interesante y sin respuesta está en negrita arriba).

Éter
fuente

Respuestas:

26

La referencia definitiva para preguntas como '¿Qué interfaz se utilizará para llegar al host wxyz?' para cualquier momento o situación es referirse a la tabla de enrutamiento.

[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 

Tengo en0 y en1 habilitados, y en0 es el primero en Orden de servicio. Desconectando mi ethernet, sin hacer otros cambios, el mismo comando da:

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

Yo uso esto:

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

Aquí hay un volcado de ifconfig -acada situación (resaltaré las diferencias después):

El cable de Ethernet está enchufado:

lo0: banderas = 8049 mtu 16384
        inet6 :: 1 prefixlen 128
        inet6 xxxx :: 1% lo0 prefixlen 64 scopeid 0x1
        inet 127.0.0.1 máscara de red 0xff000000
gif0: banderas = 8010 mtu 1280
stf0: flags = 0 mtu 1280
en0: banderas = 8863 mtu 1500
        inet6 xxxx% en0 prefixlen 64 scopeid 0x4
        inet 192.168.0.110 netmask 0xffffff00 broadcast 192.168.0.255
        éter xx: xx: xx: xx: xx: xx
        medios: estado de selección automática (100baseTX) estado: activo
        medios admitidos: ninguno seleccionar automáticamente 10baseT / UTP 10baseT / UTP 10baseT / UTP 10baseT / UTP 100baseTX 100baseTX 100baseTX 100baseTX 1000baseT 1000baseT 1000baseT 
fw0: banderas = 8863 mtu 4078
        lladdr xx: xx: xx: xx: xx: xx
        medios: estado de selección automática: inactivo
        medios admitidos: selección automática 
en1: banderas = 8863 mtu 1500
        inet6 xxxx% en1 prefixlen 64 scopeid 0x6
        inet 192.168.0.110 netmask 0xffffff00 broadcast 192.168.0.255
        éter xx: xx: xx: xx: xx: xx
        medios: estado de selección automática: activo
        medios admitidos: selección automática

El cable de Ethernet está desconectado:

lo0: banderas = 8049 mtu 16384
        inet6 :: 1 prefixlen 128
        inet6 xxxx :: 1% lo0 prefixlen 64 scopeid 0x1
        inet 127.0.0.1 máscara de red 0xff000000
gif0: banderas = 8010 mtu 1280
stf0: flags = 0 mtu 1280
en0: banderas = 8863 mtu 1500
        éter xx: xx: xx: xx: xx: xx
        medios: estado de selección automática: inactivo
        medios admitidos: ninguno seleccionar automáticamente 10baseT / UTP 10baseT / UTP 10baseT / UTP 10baseT / UTP 100baseTX 100baseTX 100baseTX 100baseTX 1000baseT 1000baseT 1000baseT 
fw0: banderas = 8863 mtu 4078
        lladdr xx: xx: xx: xx: xx: xx
        medios: estado de selección automática: inactivo
        medios admitidos: selección automática 
en1: banderas = 8863 mtu 1500
        inet6 xxxx% en1 prefixlen 64 scopeid 0x6
        inet 192.168.0.110 netmask 0xffffff00 broadcast 192.168.0.255
        éter xx: xx: xx: xx: xx: xx
        medios: estado de selección automática: activo
        medios admitidos: selección automática

diff plugged unplugged muestra que la conexión por cable se activa cuando 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
Éter
fuente
1
Anexo: a través de la extensión de terceros "MenuMeters" ( ragingmenace.com/software/menumeters ), es posible ver cuál es la interfaz "activa" y también el ancho de banda que se utiliza en todas las interfaces, lo que deja en claro que el activo de hecho, la interfaz cambia correctamente (según se desee) cuando la conexión por cable se conecta y se retira.
Eter
6

Un par de cosas. Mac siempre usará las conexiones de red en el orden que figura en su perfil de "Conexiones de red". Por ejemplo, si Ethernet está encima de Wireless, Ethernet se hará cargo.

No estoy seguro de cómo funciona SSH tanto, pero desde mi experiencia. Si una conexión falla o se desconecta, SSH usará la otra conexión.

Si realmente desea ver si las conexiones están activas, debe usar una utilidad de monitor de ancho de banda. Una excelente es iStat ( http://www.islayer.com/apps/istatmenus/ ).

Steven Lu
fuente
1
Leí accidentalmente demasiado rápido, sí ... lo que dije fue orden de servicio. Realmente deberías echar un vistazo al monitor de ancho de banda para ver qué sucede entre todas tus conexiones.
Steven Lu
ssh era lo que estaba usando para probar la red, pero realmente cualquier sesión TCP (persistente) funcionaría.
Ether
0

Utilicé el consejo para hacer que las direcciones IP sean las mismas para Ethernet y WiFi, establezca el orden de servicio como se sugiere, y simplemente utilicé Network Utility> Info en en0 y en1.

Inicié una copia de seguridad de TimeMachine y, en Network Utility> Info> en0 Ethernet, pude ver que miles de paquetes se movían a través de la conexión de Ethernet, mientras que Network Utility> Info> en1 WiFi no se movía.

Gracias por señalarme en la dirección correcta. Cuando se complete la copia de seguridad de TimeMachine, volveré a direcciones IP separadas y veré si Mac todavía mueve todo automáticamente a través de Ethernet.

La pregunta original era "¿Cómo puedo saber qué interfaz de red está usando mi computadora?" La utilidad de red funcionó para mí.

Macbook Pro 17 "Mediados de 2010, Mountain Lion

Gigapig
fuente