Lo siguiente funciona para mí. Ejecútelos después de conectarse a la VPN de Cisco. (Estoy usando el cliente Cisco integrado de OS X, no el cliente de la marca Cisco).
sudo route -nv add -net 10 -interface utun0
sudo route change default 192.168.0.1
Reemplace 10en el primer comando con la red que está al otro lado del túnel.
Reemplace 192.168.0.1con la puerta de enlace de su red local.
Lo puse en un script bash, como este:
$ cat vpn.sh
#!/bin/bash
if [[ $EUID -ne 0 ]]; then
echo "Run this as root"
exit 1
fi
route -nv add -net 10 -interface utun0
route change default 192.168.0.1
También encontré una explicación sobre cómo ejecutar esto automáticamente cuando conectas la VPN, pero es tarde el viernes y no tengo ganas de probarlo :)
Editar:
Desde entonces, dejé el trabajo donde estaba usando Cisco VPN, así que esto es de memoria.
El 10primer comando es la red que desea enrutar a través de la VPN. 10es una mano corta para 10.0.0.0/8. En el caso de Tuan Anh Tran, parece que la red lo es 192.168.5.0/24.
En cuanto a qué puerta de enlace especificar en el segundo comando, debería ser su puerta de enlace local. Cuando inicia sesión en una VPN que evita el túnel dividido, está aplicando esa política al cambiar sus tablas de enrutamiento para que todos los paquetes se enruten en la interfaz virtual. Por lo tanto, desea cambiar su ruta predeterminada a la que tenía antes de ingresar a la VPN .
La forma más fácil de descubrir la puerta de enlace es ejecutarla netstat -rnantes de iniciar sesión en la VPN y mirar la dirección IP a la derecha del destino "predeterminado". Por ejemplo, así es como se ve en mi caja en este momento:
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 10.0.1.1 UGSc 29 0 en1
10.0.1/24 link#5 UCS 3 0 en1
10.0.1.1 0:1e:52:xx:xx:xx UHLWIi 55 520896 en1 481
10.0.1.51 7c:c5:37:xx:xx:xx UHLWIi 0 1083 en1 350
10.0.1.52 127.0.0.1 UHS 0 0 lo0
Mi puerta de enlace es 10.0.1.1: está a la derecha del destino "predeterminado".
Utilizando la información de mehaase, escribí un script de Python que realmente simplifica este proceso en la Mac. Cuando lo ejecute, el script guardará la información de su firewall, iniciará el cliente AnyConnect, esperará el inicio de sesión y luego arreglará las rutas y el firewall. Simplemente ejecute el script desde 'terminal'.
fuente
El script de Python en esta respuesta anterior fue útil, sin embargo, no se ocupó de las rutas que AnyConnect solía tomar sobre otras interfaces en el dispositivo (como las interfaces de VMware). Tampoco pudo manejar múltiples redes VPN.
Aquí está el script que uso:
fuente
Es más que probable que su administrador desee configurar conexiones VPN para usar el enrutamiento local para las subredes 10.121. * Y 10.122. * Y dejar que el control remoto (su máquina doméstica) enrute el resto de las solicitudes. (les ahorra ancho de banda y responsabilidad)
¿Está utilizando el "Cliente VPN" de Cisco? os OS X?
si utiliza la VPN de OS X (configurada a través del Panel de preferencias de red), debería poder hacer clic en "avanzado" y seleccionar la pestaña "VPN a pedido". luego proporcione las subredes necesarias para que la VPN las use.
fuente
Quería una 'aplicación' nativa que pueda ejecutar al iniciar sesión (y seguir ejecutándose / oculta) para habilitar el enrutamiento del túnel dividido, similar a una función de Locamatic . Quizás bifurque a Locamatic en algún momento y juegue con él. También puedo subir este AppleScript a Github. No quería meterme con un demonio como sugiere esta respuesta.
Este script asume que VPN tiene un
VPN (Cisco IPSec)nombre predeterminado y la ruta VPN es10.10.10.1/22>10.10.20.10. Será necesario cambiarlos / agregar rutas adicionales. Ejecute terminal>netstat -rncuando VPN esté conectado (antes de habilitar este script) para ver rutas agregadas por VPN.Este script también genera notificaciones de estilo gruñido en el Centro de notificaciones :)
Me encontré con algunos problemas con la respuesta de Mark E. Haase , ya que mi VPN de Cisco modifica la puerta de enlace existente de una ruta a una (en0 interfaz específica) y agrega la puerta de enlace VPN como ruta, lo que requiere la eliminación de dos puertas de enlace predeterminadas y volver a agregar la puerta de enlace predeterminada original
UCScUGScIUCSUGScGracias a Dios por StackExchange / google, este es mi primer AppleScript y no habría podido armarlo sin unas pocas horas de búsqueda en Google.
Sugerencias / correcciones / optimizaciones bienvenidas!
AppleScript ( GitHubGist ):
guardar como una aplicación:
haga clic con el botón derecho> muestre el contenido del paquete, agregue lo siguiente a info.plist (esto oculta el ícono de la aplicación desde el dock, lo que requiere el uso de Activity Monitor o terminal>
pkill -f 'Split Tunnel'para salir de la aplicación, omita si QUIERE un ícono de dock:cree un nuevo
routeNOPASSWDarchivo de una línea (sin extensión) usando el siguiente código EXACTAMENTE (esto puede evitar el acceso a sudo si se hace incorrectamente, googlevisudopara obtener más información; esto permite que los comandos sudo en AppleScript se ejecuten SIN una solicitud de contraseña, omita si desea un mensaje de contraseña cuando la tabla de enrutamiento debe cambiarsecopia este archivo a
/etc/sudoers.dejecute los siguientes comandos en la terminal (el segundo comando solicitará la contraseña; esto permite que los
sudo routecomandos en AppleScript se ejecuten SIN solicitar la contraseña, omita si se solicita una solicitud de contraseña cuando el script está cambiando la tabla de enrutamiento)finalmente agregue la aplicación a Preferencias del sistema> Usuarios y grupos> elementos de inicio de sesión
fuente
Debería poder pedirle al administrador del enrutador al que se está conectando que configure un "grupo" separado que haga un túnel dividido y le proporcione un archivo PCF que contenga el nombre y la contraseña del grupo para ese grupo.
fuente
Tuve el mismo problema y lo conseguí gracias a @mehaase
Después de crear la
~/vpn.shrespuesta de @mehaase, puede colocar esto en una secuencia de comandos de ejecución automática de la aplicación siguiendo estos pasos:do shell script "sudo ~/vpn.sh" with administrator privilegesTambién es posible que deba ejecutar
chmod 700 ~/vpn.shdesde la Terminal para otorgar privilegios de ejecución al script.Después de conectarse a la VPN, simplemente puede ejecutar este script de aplicación. Ingrese su contraseña de administrador y haga clic en Aceptar - Listo. :)
fuente