Como posso saber qual interface de rede meu computador está usando?

24

Em um MBP (OS X 10.6.2), eu tenho as configurações de aeroporto com fio e sem fio configuradas para usar o mesmo IP estático do meu roteador (por exemplo, conforme descrito em http://forums.macrumors.com/archive/index .php / t-708685.html ). Também tenho a ordem de serviço configurada para que a conexão com fio fique acima do aeroporto (por exemplo, conforme descrito no Mac OS X, desative automaticamente o aeroporto se o cabo Ethernet estiver conectado ).

Isso parece "funcionar": uma conexão ssh aberta com um local remoto permanece ativa enquanto eu conecto e desconecto o cabo ethernet. No entanto, como a placa Airport permanece ativa (e conectada ao roteador), independentemente de a conexão com fio estar presente, como posso saber se a interface com fio é realmente a conexão "ativa" quando está disponível? Como o endereço IP é o mesmo para ambos, isso garante que a interface sem fio não pode ser usada? Existe alguma outra maneira de saber se essa interface está em uso?

PS. Vou postar uma resposta (parcial) assim que publicar, pois o ato de redigir e verificar todos os meus fatos me leva a algumas idéias. (A parte mais interessante e sem resposta está em negrito acima.)

Éter
fonte

Respostas:

26

A referência definitiva para perguntas como 'Qual interface será usada para acessar o host wxyz?' para um dado momento ou situação é consultar a tabela de roteamento.

[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 

Eu tenho en0 e en1 ativados, e en0 é o primeiro na Ordem de Serviço. Desconectando minha Ethernet, sem fazer outras alterações, o mesmo comando fornece:

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

Eu uso isso:

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
fonte
2
iface(){ route get 0.0.0.0 2>/dev/null | awk '/interface: / {print $2}'; }
precisa saber é o seguinte
8

Aqui está um despejo de ifconfig -acada situação (destacarei as diferenças posteriormente):

O cabo Ethernet está conectado:

lo0: flags = 8049 mtu 16384
        inet6 :: 1 prefixo 128
        inet6 xxxx :: 1% lo0 prefixo 64 escopo 0x1
        máscara de rede inet 127.0.0.1 0xff000000
gif0: flags = 8010 mtu 1280
stf0: flags = 0 mtu 1280
en0: flags = 8863 mtu 1500
        inet6 xxxx% en0 prefixo 64 escopo 0x4
        inet 192.168.0.110 máscara de rede 0xffffff00 broadcast 192.168.0.255
        éter xx: xx: xx: xx: xx: xx
        mídia: seleção automática (100baseTX) status: ativo
        mídia suportada: nenhuma seleção automática 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
        mídia: status de seleção automática: inativo
        mídia suportada: seleção automática 
en1: flags = 8863 mtu 1500
        inet6 xxxx% en1 prefixo 64 escopo 0x6
        inet 192.168.0.110 máscara de rede 0xffffff00 broadcast 192.168.0.255
        éter xx: xx: xx: xx: xx: xx
        mídia: status de seleção automática: ativo
        mídia suportada: seleção automática

O cabo Ethernet está desconectado:

lo0: flags = 8049 mtu 16384
        inet6 :: 1 prefixo 128
        inet6 xxxx :: 1% lo0 prefixo 64 escopo 0x1
        máscara de rede inet 127.0.0.1 0xff000000
gif0: flags = 8010 mtu 1280
stf0: flags = 0 mtu 1280
en0: flags = 8863 mtu 1500
        éter xx: xx: xx: xx: xx: xx
        mídia: status de seleção automática: inativo
        mídia suportada: nenhuma seleção automática 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
        mídia: status de seleção automática: inativo
        mídia suportada: seleção automática 
en1: flags = 8863 mtu 1500
        inet6 xxxx% en1 prefixo 64 escopo 0x6
        inet 192.168.0.110 máscara de rede 0xffffff00 broadcast 192.168.0.255
        éter xx: xx: xx: xx: xx: xx
        mídia: status de seleção automática: ativo
        mídia suportada: seleção automática

diff plugged unplugged mostra que a conexão com fio fica ativa quando está disponível:

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
fonte
1
Adendo: através da extensão de terceiros "MenuMeters" ( ragingmenace.com/software/menumeters ), é possível ver qual é a interface "ativa" e também a largura de banda usada em todas as interfaces, o que deixa claro que o ativo A interface realmente muda corretamente (conforme desejado) quando a conexão com fio é conectada e removida.
Éter
6

Um par de coisas. O Mac sempre usará as conexões de rede na ordem listada no seu perfil "Conexões de rede". Por exemplo, se a Ethernet estiver sobre a Wireless, a Ethernet assumirá o controle.

Não sei muito bem como o SSH funciona, mas de acordo com minha experiência. Se uma conexão falhar ou desconectar, o SSH usará a outra conexão.

Se você realmente deseja ver se as conexões estão ativas, use um utilitário de monitor de largura de banda. Um ótimo é o iStat ( http://www.islayer.com/apps/istatmenus/ ).

Steven Lu
fonte
1
Eu acidentalmente li muito rápido, sim ... o que eu disse foi ordem de serviço. Você realmente deve dar uma olhada no monitor de largura de banda para ver o que está acontecendo entre todas as suas conexões.
Steven Lu
ssh era o que eu estava usando para testar a rede, mas realmente qualquer sessão TCP (persistente) faria.
Ether
0

Usei o conselho para tornar os endereços IP iguais para Ethernet e WiFi, definir a ordem de serviço conforme sugerido e apenas usei o Network Utility> Info em en0 e en1.

Iniciei um backup do TimeMachine e, em Network Utility> Info> en0 Ethernet, pude ver que milhares de pacotes estavam se movendo através da conexão Ethernet, enquanto Network Utility> Info> en1 WiFi nada estava se movendo.

Obrigado por me apontar na direção certa. Quando o backup do TimeMachine estiver concluído, voltarei a separar os endereços IP e verifico se o Mac ainda move automaticamente tudo pela Ethernet.

A pergunta original era "Como posso saber qual interface de rede meu computador está usando?" Utilitário de rede funcionou para mim.

Macbook Pro 17 "meados de 2010, leão da montanha

Gigapig
fonte