¿Cómo prioriza Mac OSX las interfaces de red al enrutar?

20

Para dar un ejemplo concreto, ¿cómo elige OSX a cuál de estas entradas predeterminadas netstat -nrdesea enrutar?

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 

Por lo que he podido decir, OSX usa métricas en sus interfaces en lugar de en sus entradas de la tabla de enrutamiento. Pero por defecto, todas esas métricas de interfaz son 0, entonces, ¿cómo se elige? Última interfaz creada?

He visto a algunas personas sugerir que es el orden en las preferencias de Red, pero en mi caso la interfaz ppp0 (de SonicWall NetExtender) no aparece en la lista.

Hay un poco de discusión en este hilo , pero no hay respuesta que veo.

studgeek
fuente
¿Has descubierto cómo configurar la métrica de ruta?
endryha 01 de

Respuestas:

8

La mayoría de los sistemas siguen estas reglas al elegir qué ruta usar:

  • Encuentra los más específicos (es decir, los que tienen el prefijo coincidente más largo).
  • Elija el que tenga la mayor prioridad .

En Linux (y, creo, en Windows) la prioridad está determinada por la métrica , pero no es el caso en macOS como usted señaló correctamente. En lugar de asignar métricas a rutas individuales, macOS asigna prioridades a las interfaces . Puede usar networksetup -listnetworkserviceorderpara ver este orden y networksetup -ordernetworkservicescambiarlo.

Ahora, esta ruta desde su salida me hace pensar que en su caso la especificidad también juega su papel:

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

Esta ruta cubre la mitad inferior del espacio de direcciones y, por lo tanto, esperaría encontrar también:

128.0/1            10.10.99.100       UGSc            0        0    ppp0

en tu tabla de enrutamiento. Este es un truco estándar que el software VPN utiliza para priorizar sus rutas default: agrega dos rutas que juntas cubren todas las direcciones IP, pero cada una de ellas es más específica que la predeterminada, por lo que ganan.

kirelagin
fuente
En Linux, la prioridad solo está determinada por la métrica para casos de tablas de enrutamiento individuales, sin embargo, las reglas de mayor prioridad pueden anular la métrica de las rutas de otras tablas con una entrada de regla prio más baja en casos de tablas de enrutamiento múltiples. También con el enrutamiento dinámico, uno tiene que considerar la distancia administrativa más baja.
Moreaki
Muchas gracias por: "Este es un truco estándar que el software VPN utiliza para priorizar sus rutas sobre las predeterminadas". Esto finalmente me ayudó a entender que WTF estaba sucediendo en mi caso.
ipmcc
15

Cualquier tabla de enrutamiento que tenga múltiples rutas predeterminadas con métricas iguales equilibra la carga. Sin embargo, el caso con una Mac es que seleccionará la primera interfaz que está en la lista de interfaces. Si desea ver y cambiar la lista, vaya a "abrir preferencias de red", aquí verá una lista de interfaces de red como ethernet, aeropuerto, ppp a través de dispositivos móviles o 3g, etc. Debajo de la lista, verá un asterisco en forma opción con una flecha hacia abajo. Haga clic en esto y establezca el "establecer orden de servicio". Aquí puede cambiar las preferencias de su interfaz particular.

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

Samir Sogay
fuente
3
¿Hay alguna fuente a la que pueda hacer referencia que confirme esto? Si puede hacer referencia a un sitio que hará que su respuesta valga más la pena y la gente la votará.
slm
1
"Establecer orden de servicio" se puede confirmar aquí: OS X Mountain Lion: Cambiar la prioridad de sus conexiones de red
David Moles