Respuesta editada
(Re) mejoró la respuesta mejorada de casi todos los demás (@elmart, @ user26312, yo mismo). Las ediciones no deberían ser necesarias en el script:
#!/bin/bash
default_line=$(netstat -rn |grep default)
gateway=$(echo $default_line | awk '{print $2}')
interface=$(echo $default_line | awk '{print $6}')
echo $gateway
echo $interface
scutil <<EOF
d.init
get State:/Network/Service/forticlientsslvpn/IPv4
d.add InterfaceName ppp0
set State:/Network/Service/forticlientsslvpn/IPv4
EOF
route delete default
route delete -ifscope $interface default
route add -ifscope $interface default $gateway
route add -net 0.0.0.0 -interface $interface
Haga que el archivo en el que lo colocó sea ejecutable y ejecute (después de conectarse con la VPN) con sudo. Antes de que el script realice algún cambio, analiza su ruta predeterminada actual y, por lo tanto, conoce su puerta de enlace e interfaz actuales.
Vieja respuesta
No es una solución completa, tendrá que hacer las siguientes dos cosas de alto nivel después de cada configuración de conexión VPN:
- Tendremos que configurar la interfaz del túnel para
ppp0
- Rehacer rutas predeterminadas (porque 1. establece implícitamente la puerta de enlace predeterminada incorrecta, el túnel dividido debería funcionar correctamente de aquí en adelante)
Cree un archivo con el nombre, scutil-forti
por ejemplo
d.init
get State:/Network/Service/forticlientsslvpn/IPv4
d.add InterfaceName ppp0
set State:/Network/Service/forticlientsslvpn/IPv4
Rehaga las rutas de la puerta de enlace, así que cree otro archivo, routes-forti
con ( tenga en cuenta las líneas con configuraciones específicas para su red):
sudo route delete default
sudo route delete -ifscope en0 default # This line depends on your interface
sudo route add -ifscope en0 default 192.168.2.252 # This depends on your normal local gateway.
sudo route add -net 0.0.0.0 -interface en0
ahora ejecuta
$ cat scutil-forti |sudo scutil ; bash routes-forti
State:/Network/Service/forticlientsslvpn/IPv4
clave está ahí para comenzar una vez que el túnel VPN se está ejecutando y se elimina cuando se desconecta el túnel VPN. Las rutas no son realmente diferentes de lo que deberían ser.He reelaborado la solución de @ hbogert en un script único más manejable:
Eso supone que está utilizando la interfaz en0 y la puerta de enlace predeterminada 192.168.1.1. Si no, reemplácelos con sus valores correspondientes. Si no los conoce, escriba
route get www.google.com
para obtenerlos. Luego:chmod u+x fix-vpn
).sudo fix-vpn
) justo después de conectarse a vpn.Lo he intentado y funciona. Como dije, esto es solo una revisión de una solución anterior. Lo publiqué como una respuesta separada porque no tenía suficiente espacio en un comentario.
Por cierto, también pensé que esto podría incluirse en un
/etc/ppp/ip-up
script para que se ejecute automáticamente al conectarse. Pero por alguna razón, no funciona de esa manera. Si alguien puede explicar / mejorar eso, por favor hágalo.fuente
¡Pude usar una versión anterior de Forticlient y confirmó que funciona!
Aquí está el enlace a mi en Dropbox:
https://www.dropbox.com/s/p43ssvp0gusmzeq/forticlientsslvpn_macosx_4.0.2297.dmg?dl=0
fuente
ACTUALIZACIÓN: la descarga e instalación de la versión 5.4.1 más reciente y oficial para Mac OS X corrige todos los problemas en Mac OS X El Capitan.
Como se describe en el foro fortinet, uno debe descargar la versión más reciente (aún no publicada) de FortiClient para solucionar los problemas en Mac OS X El Capitan:
https://www.dropbox.com/sh/cb0j4pxw1f8nq84/AABHzZW1bpx1VjzYAmiK00S9a?dl=0
Esta fue la solución más fácil para mí.
fuente
Mejorando un poco la respuesta de @elmart (creo).
De esa manera, el script no necesita ser editado (y cambiar las interfaces no debería ser un problema).
xargs
se usa para quitar el espacio en blanco.También he agregado (aunque no sé si esto es una mejora):
Hasta el comienzo del guión para recordarle a la gente que use sudo.
fuente
route get
comando para eliminar la dependencia del DNS.$ netstat -rn
para obtener la puerta de enlace y la interfaz.Tomé el script de hbogert y lo envolví en Applescript para mí y otro empleado, está disponible aquí: https://www.dropbox.com/s/lh0hsqdesk3i0n7/Execute-Post-VPN-Connection.app.zip?dl=0
Simplemente conéctese a VPN, luego ejecute la aplicación y escriba su contraseña de administrador (requerida para sudo). NOTA: DEBE GUARDAR EN / Aplicaciones /
fuente
Resolví el problema por mí volviendo a configurar los ajustes de DNS para usar servidores DNS de Google antes de los proporcionados por FortiClient. Desafortunadamente, esto debe hacerse después de cada reconexión.
Los detalles sobre esto se pueden encontrar aquí .
fuente
En mi versión actual de OS X (Sierra 10.12.6) y FortiClient 5.6.1 parece que si ServerAddresses tiene más de 2 direcciones, entonces la llamada "set" no persiste nada (si "obtiene", nada habrá sido actualizado). Para solucionar esto, decidí mantener solo la primera dirección DNS de FortiClient y fusionarla con mi dirección DNS pública (8.8.8.8).
Además, sugeriría ejecutar automáticamente el script bash en FortiClient connect: esto se puede hacer exportando el script de configuración de FortiClient y luego volviendo a importarlo
Guía completa a continuación:
1 / Cree el siguiente script de bash y guárdelo en algún lugar (en mi caso, estaba en
~/bashscripts/update-forticlient-dns.sh
) y no olvide reemplazarlo<FIRST IP ADDRESS FOR FORTICLIENT DNS>
por el resultado descutil --dns | grep "nameserver\[0\]"
mientras su conexión FortiClient está activa2 / Ejecute FortiClient, luego vaya a Preferencias > General y haga clic en el botón Copia de seguridad que exportará su configuración de FortiClient a un archivo
3 / En este archivo, localice y edite el / forticlient_configuration / vpn / sslvpn / connections / connection [name = "YOUR CONNECTION"] / on_connect / script / script y llame a su script dentro de él:
4 / Vuelva a la consola de FortiClient, haga clic en el candado en la esquina inferior izquierda, luego vaya a Preferencias > General y haga clic en el botón Restaurar : ubique su archivo de configuración actualizado y listo , su configuración de DNS se actualizará sobre la marcha cada vez que conectarse a la VPN.
fuente