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 10
en el primer comando con la red que está al otro lado del túnel.
Reemplace 192.168.0.1
con 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 10
primer comando es la red que desea enrutar a través de la VPN. 10
es 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 -rn
antes 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 -rn
cuando 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
UCSc
UGScI
UCS
UGSc
Gracias 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
routeNOPASSWD
archivo de una línea (sin extensión) usando el siguiente código EXACTAMENTE (esto puede evitar el acceso a sudo si se hace incorrectamente, googlevisudo
para 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.d
ejecute los siguientes comandos en la terminal (el segundo comando solicitará la contraseña; esto permite que los
sudo route
comandos 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.sh
respuesta 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 privileges
También es posible que deba ejecutar
chmod 700 ~/vpn.sh
desde 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