Como o Mac OSX prioriza as interfaces de rede ao rotear?

17

Para dar um exemplo concreto, como a OSX escolhe quais dessas entradas padrão de netstat -nr para rotear?

Destination        Gateway            Flags        Refs      Use   Netif Expire
0/1                10.10.99.100       UGSc            0        0    ppp0
default            192.168.1.1        UGSc            5        0     en0
default            192.168.1.1        UGScI           1        0     en1
default            192.0.2.1          UGScI         157        2    ppp0 

Pelo que pude dizer, a OSX usa métricas em suas interfaces, e não em suas entradas na tabela de roteamento. Mas, por padrão, todas essas métricas de interface são 0, então, como ela é escolhida? Última interface criada?

Eu vi algumas pessoas sugerirem que é a ordem nas preferências de Rede, mas no meu caso a interface ppp0 (do SonicWall NetExtender) não está listada lá.

Existe alguma discussão neste tópico , mas nenhuma resposta que vejo.

    
por studgeek 10.09.2012 / 21:11

2 respostas

3

A maioria dos sistemas segue essas regras ao escolher qual rota usar:

  • Encontre as mais específicas (ou seja, aquelas com o maior prefixo correspondente).
  • Escolha aquele com a maior prioridade .

No Linux (e, eu acho, no Windows) a prioridade é determinada por métrica , mas não é o caso do macOS como você apontou corretamente. Em vez de atribuir métricas a rotas individuais, o macOS atribui prioridades às interfaces . Você pode usar networksetup -listnetworkserviceorder para visualizar este pedido e networksetup -ordernetworkservices para alterá-lo.

Agora, esse caminho da sua saída me faz pensar que, no seu caso, a especificidade também desempenha seu papel:

Destination        Gateway            Flags        Refs      Use   Netif Expire
0/1                10.10.99.100       UGSc            0        0    ppp0

Esta rota cobre a metade inferior do espaço de endereço e, portanto, eu esperaria encontrar também:

128.0/1            10.10.99.100       UGSc            0        0    ppp0

na sua tabela de roteamento. Esse é um truque padrão que o software VPN usa para priorizar suas rotas acima de default : ele adiciona duas rotas que, juntas, cobrem todos os endereços IP, mas cada uma delas é mais específica do que o padrão, então eles ganham.

    
por 20.05.2018 / 05:36
14

Qualquer tabela de roteamento que tenha várias rotas padrão com métricas iguais faz o balanceamento de carga. O caso com um mac é que ele irá selecionar a primeira interface que está na lista de interfaces. Se você quiser ver e alterar a lista, vá para "abrir preferências de rede", aqui você verá uma lista de interfaces de rede como ethernet, aeroporto, ppp através de celular ou 3G, etc. Abaixo da lista, você verá um asterisco em forma opção com uma seta para baixo. Clique aqui e defina a "ordem de serviço definida". Aqui você pode alterar a preferência de sua interface específica.

link

    
por 29.12.2012 / 12:06