Cómo volver a cargar la tabla de enrutamiento predeterminada de Mac OSX sin reiniciar

71

Saludos,

Estoy usando vpncpara un cliente VPN. También estoy haciendo algunas cosas difíciles routepara asegurarme de que todavía puedo acceder a mi red local, etc., etc. (los detalles aquí no son muy importantes).

A veces obtengo la tabla de enrutamiento tan elevada que obtengo ping: sendto: Network is unreachableURL que de otro modo deberían resolverse.

Actualmente, si reinicio Mac OS X, todo vuelve a la normalidad. Lo que me gustaría hacer es restablecer las tablas de enrutamiento a las "predeterminadas" (por ejemplo, lo que está configurado en el arranque) sin reiniciar todo el sistema.

Creo que el paso 1 es route flush(para eliminar todas las rutas). Y el paso 2 necesita recargar todas las rutas predeterminadas.

¿Alguna idea sobre cómo hacer esto? (por ejemplo, ¿qué es el paso 2?)

EDITAR Además, estoy notando que otro síntoma traceroutetambién falla en la dirección en cuestión. Por ejemplo:

traceroute the.good.dns.name

traceroute: bind: Can't assign requested address

Nate Murray
fuente

Respuestas:

64

Necesitas limpiar las rutas. Use route -n flush varias veces. A continuación, agregue sus rutas con agregar ruta.

cavver
fuente
1
He cambiado esto a la respuesta aceptada. ¡Funciona! Lo hice route -n flushvarias veces, luego reinicié mi red a través de las preferencias del sistema. Solo me llevó un año volver y resolver esto :)
Nate Murray
Esto resolvió un problema similar para mí con el cliente VPN Aventail Connect de Sonicwall que encuentro particularmente propenso a fallas de "No se puede asignar la dirección solicitada", especialmente al cambiar de red inalámbrica. Ahora tengo una forma de resolver que no evita un ciclo de energía. ¡Gracias!
Alan Donnelly
¡Guauu! También ayudó con mi problema con BarracudaVPN ... Apagué / encendí el Wi-Fi, ¡y finalmente pude volver a conectarme! ¡Muchas gracias!
hans_meine
19

Me encontraba con este problema mientras usaba un servidor OpenVPN doméstico y me conectaba a él usando la aplicación Tunnelblick en Mac.

Lo que estaba sucediendo de mi parte es que una ruta con la IP de mi hogar como destino y una puerta de enlace incorrecta se estaba quedando después de desconectarse de la VPN. Eliminar esta ruta resolvió el problema, simplemente

$ sudo route -n delete the.good.dns.name

Ejemplo: estoy en la escuela y después de un nuevo inicio de computadora, me conecto a una red inalámbrica. Me conecto al servidor OpenVPN de mi casa con Tunnelblick.

$ netstat -nr
Destination                   Gateway
....
[home-ip]/32                  [school-default-gateway-1] ....
....

Me desconecto del servidor VPN. Cambio las redes inalámbricas. Esto cambia mi puerta de enlace predeterminada.

$ netstat -nr
Destination                   Gateway
...
[home-ip]/32                  [school-default-gateway-1] ...
...
$ ping [home-ip]
PING [home-ip]: 56 data bytes
ping: sendto: Network is unreachable
ping: sendto: Network is unreachable
Request timeout for icmp_seq 0
...

Bajo ninguna circunstancia puedo conectarme a mi red doméstica (VPN, ping, nada) después de que esto suceda. Si luego elimino la ruta:

$ sudo route -n delete [home-ip]
delete net [home-ip]
$ ping [home-ip]
PING [home-ip]: 56 data bytes
64 bytes from [home-ip]: icmp_seq=1 ttl=56 time=13.111 ms

Funciona bien.

Puede haber un problema con la configuración del cliente / servidor OpenVPN que está dejando esto (y me interesaría saber qué es eso), pero instalé un script de Tunnelblick posterior a la desconexión que automatiza esta eliminación de ruta.

Sean
fuente
De hecho, estoy teniendo un problema similar aquí. Realmente molesto.
Tom Busby
Me encuentro con el mismo problema, incluso con el script ovpn de ejemplo. La única solución que he encontrado es la misma que OP, al eliminar la ruta en un script posterior a la desconexión: /
jklp
¿Hay alguna manera de ejecutar automáticamente este script en cada desconexión?
Whitecat
@ Whitecat Sí! Mira esto: superuser.com/a/1305361
Elad Nava
13

Primero necesita una ruta para su interfaz de red. Si la VPN está desconectada, simplemente baje la interfaz de red y vuelva a abrirla con ifconfig. Luego use el comando de ruta y construya su gw predeterminado. Entonces algo como:

ifconfig en0 down

ifconfig en0 up

route add <ip address> default

Jordan Eunson
fuente
1
Sí, pero ¿cómo sabe Mac OS X cuál es la dirección IP de la ruta predeterminada? Lo que realmente me gustaría ver es cómo Mac OS X realiza el proceso de arranque y hace exactamente lo mismo.
Nate Murray
1
...? Lo obtiene de DHCP ...
Jordan Eunson
5

Me encontraba con el mismo problema que @Sean (también estoy ejecutando OS X), en el sentido de que cuando cambié entre las redes domésticas y laborales, la ruta predeterminada no se borraba.

Para completar, cuando me conecto a mi VPN en casa y ejecuto el siguiente comando, mostraría la puerta de enlace predeterminada como se muestra a continuación

$ netstat -nr
Destination                   Gateway
...
[home-ip]/32                  [work-default-gateway-1]

Y cuando me desconecté, la puerta de enlace [home-ip] todavía estaría allí. Cuando me conecté a mi red de trabajo, no pude conectarme a Internet y me encontré con el mismo problema que OP

$ traceroute the.good.dns.name    
$ traceroute: bind: Can't assign requested address

Luego tendría que eliminar manualmente la ruta con

$ sudo route -n delete [home-ip]

Inicialmente puse el "route -n delete" en un post-disconnect.shscript, pero eso fue un poco desordenado, así que en su lugar encontré este enlace

https://code.google.com/p/tunnelblick/issues/detail?id=177

Aparentemente, la razón se debe a establecer lo siguiente en mi .ovpnarchivo

user nobody
group nogroup

Lo que significa que la ruta está configurada como root, pero cuando se desconecta la conexión, el usuario ya no es root, por lo que la ruta no se puede eliminar.

Al comentar estas 2 líneas en mi .ovpnarchivo se solucionó el problema, sin tener que usar a post-disconnect.sh.

jklp
fuente
Gracias, esto también funcionó para mí. Es lamentable que el enlace del código de google ya no funcione.
Toby
Intenté usar su sugerencia, el problema es que cuando me conecto a la VPN, extrae los archivos de configuración de alguna parte y sobrescribe mis cambios. No los está obteniendo del servidor, por lo que puedo decir, porque cuando cambio esos archivos no soluciona el problema. ¿Hay alguna ubicación del lado del cliente donde pueda encontrar estos archivos y destruirlos / modificarlos para que mis cambios se mantengan?
Precio final
Estaba cometiendo el error trivial de confundir ~ / Library con / Library. ¡Uy! Para cualquiera que lea esto, desea modificar el archivo en ~ / Library / Application Support / Tunnelblick / Configurations / <vpnname> .tblk / Contents / Resources
Finncent Price