Como o Mac OSX prioriza as interfaces de rede durante o roteamento?


20

Para dar um exemplo concreto, como o OSX escolhe para qual dessas entradas padrão netstat -nrdeve encaminhar?

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, o OSX usa métricas em suas interfaces, e não nas entradas da tabela de roteamento. Mas, por padrão, todas essas métricas de interface são 0, então como ele escolhe? Última interface criada?

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

Há alguma discussão neste tópico , mas nenhuma resposta que eu vejo.


Você descobriu como definir a métrica da rota?
Endryha

Respostas:


8

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

  • Encontre os mais específicos (ou seja, aqueles com o prefixo de correspondência mais longo).
  • Escolha aquele com a maior prioridade .

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

Agora, essa rota a partir 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

Essa 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 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, para que ganhem.


No Linux, a prioridade é determinada apenas pela métrica para casos de tabela de roteamento único, no entanto, regras de prioridade mais alta podem substituir a métrica de rotas de outras tabelas com entrada de regra de prio inferior em vários casos da tabela de roteamento. Também com roteamento dinâmico, é preciso considerar a menor distância administrativa.
Moreaki 03/02

Muito obrigado por: "Este é um truque padrão que o software VPN usa para priorizar suas rotas sobre o padrão". Isso finalmente me ajudou a entender que o WTF estava acontecendo no meu caso.
ipmcc

15

Qualquer tabela de roteamento que possui várias rotas padrão com métricas iguais faz o balanceamento de carga. O caso de um mac é que ele 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 "definir ordem de serviço". Aqui você pode alterar a preferência de sua interface específica.

http://www.sustworks.com/site/prod_ipnrx_help/html/AlternateRouteHelp.html


3
Existe alguma fonte que você possa referenciar que confirme isso? Se você pode fazer referência a um site que tornará sua resposta mais interessante e as pessoas votarão nela.
Slm

1
"Definir ordem de serviço" pode ser confirmado aqui: OS X Mountain Lion: altere a prioridade de suas conexões de rede
David Moles
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.