Réponse modifiée
(Re) amélioré la réponse améliorée de presque tout le monde (@elmart, @ user26312, moi-même). Les modifications ne devraient pas être nécessaires dans le 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
Rendez le fichier dans lequel vous le placez, exécutable et exécutez (après la connexion avec le VPN) avec sudo. Avant que le script n'apporte de modifications, il examine votre itinéraire par défaut actuel et connaît donc votre passerelle et votre interface actuelles.
Ancienne réponse
Ce n'est pas une solution complète, vous devrez faire les deux choses suivantes de haut niveau après chaque configuration de connexion VPN:
- Nous devrons définir l'interface du tunnel sur
ppp0
- Rétablir les routes par défaut (car 1. définit implicitement la mauvaise passerelle par défaut, le tunnel fractionné devrait toujours fonctionner correctement ci-après)
Créez un fichier avec le nom scutil-forti
par exemple
d.init
get State:/Network/Service/forticlientsslvpn/IPv4
d.add InterfaceName ppp0
set State:/Network/Service/forticlientsslvpn/IPv4
Refaire les routes de la passerelle, alors créez un autre fichier, routes-forti
avec ( faites attention aux lignes avec des paramètres spécifiques pour votre réseau):
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
maintenant, exécutez,
$ cat scutil-forti |sudo scutil ; bash routes-forti
State:/Network/Service/forticlientsslvpn/IPv4
clé est là pour commencer une fois que le tunnel VPN est en cours d'exécution et est supprimée lorsque le tunnel VPN est supprimé se déconnecte. Les itinéraires ne sont pas réellement différents de ce qu'ils devraient être.J'ai retravaillé la solution de @ hbogert en un script unique plus facile à gérer:
Cela suppose que vous utilisez l'interface en0 et la passerelle par défaut 192.168.1.1. Sinon, remplacez-les par vos valeurs correspondantes. Si vous ne les connaissez pas, tapez
route get www.google.com
pour les obtenir. Ensuite:chmod u+x fix-vpn
).sudo fix-vpn
) juste après vous être connecté à vpn.Je l'ai essayé et ça marche. Comme je l'ai dit, ce n'est qu'un remaniement d'une solution précédente. Je viens de le poster comme une réponse séparée parce que je n'avais pas assez d'espace dans un commentaire.
BTW, je pensais également que cela pourrait être inclus dans un
/etc/ppp/ip-up
script afin qu'il soit automatiquement exécuté lors de la connexion. Mais pour une raison quelconque, cela ne fonctionne pas de cette façon. Si quelqu'un peut expliquer / améliorer cela, veuillez le faire.la source
J'ai pu utiliser une ancienne version de Forticlient et j'ai confirmé que cela fonctionne!
Voici le lien vers celui-ci sur ma boîte de dépôt:
https://www.dropbox.com/s/p43ssvp0gusmzeq/forticlientsslvpn_macosx_4.0.2297.dmg?dl=0
la source
MISE À JOUR: Le téléchargement et l'installation de la version 5.4.1 la plus récente et officielle pour Mac OS X corrige tous les problèmes sur Mac OS X El Capitan.
Comme décrit dans le forum Fortinet, il faut télécharger la version la plus récente (mais non publiée) de FortiClient pour résoudre les problèmes sur Mac OS X El Capitan:
https://www.dropbox.com/sh/cb0j4pxw1f8nq84/AABHzZW1bpx1VjzYAmiK00S9a?dl=0
C'était la solution la plus simple pour moi.
la source
Améliorer un peu la réponse de @ elmart (je pense).
De cette façon, le script n'a pas besoin d'être modifié (et le changement d'interface ne devrait pas être un problème).
xargs
est utilisé pour supprimer l'espace.J'ai également ajouté (même si je ne sais pas si c'est une amélioration):
Au tout début du script pour rappeler aux gens d'utiliser sudo.
la source
route get
commande pour éliminer la dépendance au DNS.$ netstat -rn
pour obtenir la passerelle et l'interface.J'ai pris le script de hbogert et l'ai enveloppé dans Applescript pour moi et un autre employé, il est disponible ici: https://www.dropbox.com/s/lh0hsqdesk3i0n7/Execute-Post-VPN-Connection.app.zip?dl=0
Connectez-vous simplement au VPN, puis exécutez l'application et saisissez votre mot de passe administrateur (requis pour sudo). REMARQUE: DOIT ÊTRE ENREGISTRÉ DANS / Applications /
la source
J'ai résolu le problème pour moi en reconfigurant les paramètres DNS pour utiliser les serveurs DNS de Google avant ceux fournis par FortiClient. Malheureusement, cela doit être fait après chaque reconnexion.
Des détails à ce sujet peuvent être trouvés ici .
la source
Sur ma version actuelle d'OS X (Sierra 10.12.6) et FortiClient 5.6.1, il semble que si ServerAddresses a plus de 2 adresses, alors l'appel "set" ne persiste rien (si vous "obtenez", rien n'aura été actualisé). Pour contourner ce problème, j'ai décidé de ne conserver que la première adresse DNS FortiClient et de la fusionner avec mon adresse DNS publique (8.8.8.8).
De plus, je suggère d'exécuter automatiquement le script bash sur FortiClient connect: cela peut être fait en exportant le script de configuration FortiClient puis en le réimportant
Guide complet ci-dessous:
1 / Créez le script bash suivant et stockez-le quelque part (dans mon cas, c'était dans
~/bashscripts/update-forticlient-dns.sh
) et n'oubliez pas de remplacer le<FIRST IP ADDRESS FOR FORTICLIENT DNS>
par le résultatscutil --dns | grep "nameserver\[0\]"
pendant que votre connexion FortiClient est établie2 / Exécutez FortiClient, puis allez dans Préférences > Général et cliquez sur le bouton Sauvegarder qui exportera votre configuration FortiClient dans un fichier
3 / Dans ce fichier, recherchez et modifiez le / forticlient_configuration / vpn / sslvpn / connections / connection [name = "YOUR CONNECTION"] / on_connect / script / script node et appelez votre script à l'intérieur:
4 / Revenez à la console FortiClient, cliquez sur le verrou dans le coin inférieur gauche, puis allez dans Préférences > Général et cliquez sur le bouton Restaurer : localisez votre fichier de configuration mis à jour et c'est tout, votre configuration DNS sera mise à jour à la volée à chaque fois que vous connectez-vous au VPN.
la source