Le logiciel Forticlient VPN est bouché, lors de l'utilisation de Horizon Split, puisque Osx El Capitan. Le problème est que les demandes DNS sont envoyées sur l'interface primaire normale sur le DNS du tunnel VPN.
Comment pouvons-nous obtenir les demandes DNS à être envoyées via l'interface correcte (tunnel I.e. VPN)
(Re) amélioré sur à peu près à la réponse améliorée de tout le monde (@elmart, user26312, moi-même). Les modifications ne doivent 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
Créez le fichier que vous avez mis cela dans, exécutable et exécuté (après la connexion du VPN) avec sudo. Avant que le script ne change de changement, il examine votre voie par défaut actuelle et connaît donc votre passerelle et votre interface actuelle.
Pas une solution complète, vous devrez effectuer les deux choses de haut niveau suivantes après chaque configuration de la connexion VPN:
ppp0
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 des itinéraires de passerelle, alors faites un autre fichier, routes-forti
, avec (esprit les 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
J'ai retravaillé la solution de Hbogert dans un script unique plus gérable:
#!/bin/bash
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 en0 default
route add -ifscope en0 default 192.168.1.1
route add -net 0.0.0.0 -interface en0
Cela suppose que vous utilisez l'interface EN0 et l'interface 192.168.1.1 Passerelle par défaut. Sinon, remplacez-les avec vos valeurs correspondantes. Si vous ne les connaissez pas, tapez route get www.google.com
les attraper. Puis:
chmod u+x fix-vpn
).Sudo fix-vpn
) juste après la connexion à VPN.Je l'ai essayé et ça marche. Comme je l'ai dit, il s'agit simplement d'une reprise d'une solution précédente. Je viens de la poster comme une réponse séparée parce que je n'avais pas assez d'espace dans un commentaire.
BTW, j'ai aussi pensé 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 faire.
J'ai pu utiliser une version plus ancienne de Forticlient et confirmé que cela fonctionne!
Voici le lien avec ma Dropbox:
https://www.dropbox.com/s/p43sssvp0gusmzeq/forticlientslvpn_macosx_4.0.2297.dmg?dl=
Mise à jour: Téléchargement et installation de la version la plus récente et officielle 5.4.1 pour Mac OS X corrige tous les problèmes de Mac OS X El Capitan.
Comme décrit dans le Forum Fortinet Il faut télécharger la version la plus récente (encore non publiée) du Forticlient pour résoudre les problèmes sur Mac OS X El Capitan:
https://www.dropbox.com/sh/cb0j4pxw1f8nq84/aabhzzw1BPX1vjzyamik00s9a?dl=
C'était la solution la plus facile pour moi.
J'ai résolu le problème pour moi en ré-configurant les paramètres DNS pour utiliser les serveurs Google DNS avant ceux fournis par Frotticlient. Malheureusement, cela doit être fait après chaque ré-connexion.
#!/bin/bash
scutil <<EOF
d.init
d.add ServerAddresses 8.8.8.8 8.8.4.4 <IP ADDRESSES FOR DNS FROM FORTICLIENT>
set State:/Network/Service/forticlientsslvpn/DNS
quit
EOF
Les détails à ce sujet peuvent être trouvés ICI .
J'ai pris le script de Hbogert et je l'ai enveloppé dans AppleScript pour moi-même et un autre employé, il est disponible ici: https://www.dropbox.com/s/lh0hsqdesk3i0n7/execute-post-vpn-connection.app.zip?dl =
Connectez-vous simplement à VPN, puis exécutez l'application et tapez votre mot de passe administrateur (obligatoire pour sudo). Remarque: doit être enregistré dans/Applications /
Sur ma version actuelle du système d'exploitation X (Sierra 10.12.6) et Forticlient 5.6.1 Il semble que si ServerAdDresses ait plus de 2 adresses, l'appel "Set" ne persiste rien (si vous "gênez", rien n'aura été mis à jour). Pour contourner ce problème, j'ai décidé de garder une première adresse DNS Forticlient et de la fusionner avec mon adresse DNS publique (8.8.8.8).
De plus, je suggérerais d'exécuter automatiquement le script Bash sur Forticlient Connect: Ceci peut être effectué en exportant le script de configuration de Forticlient, puis à la ré-importer.
Guide complet ci-dessous:
1/Créez-le après le script Bash et rangez-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>
À la suite de scutil --dns | grep "nameserver\[0\]"
tandis que votre connexion fortiflient est en place
#!/bin/bash
ROOT_PASSWORD=$1
# Uncomment this if you want to log everything happening during this script execution into a dedicated log file
# exec >/tmp/forticlient-log 2>&1
# Ensuring we did a Sudo correctly once
# Because we cannot both use a pipe and an stdin redirection at the same time
# (or at least, my bash knowledge is not wide enough for that :-))
echo "$ROOT_PASSWORD" | Sudo -S ls /dev/null
Sudo scutil <<EOF
get State:/Network/Service/forticlientsslvpn/DNS
d.add ServerAddresses 8.8.8.8 <FIRST IP ADDRESS FOR FORTICLIENT DNS>
set State:/Network/Service/forticlientsslvpn/DNS
quit
EOF
2/exécutez FORTICLIENT, puis entrez dans Préférences> Généralités et cliquez sur la touche sauvegarde qui exportera votre configuration fortiflient dans un fichier
3/Dans ce fichier, localiser et modifier le /FORICLient_Configuration/VPN/SSLVPN/Connections/Connexion [Nom = "Votre connexion"]/On_Connect/script/script Nœud et appelez votre script à l'intérieur:
<on_connect>
<script>
<os>mac</os>
<script>/Users/fcamblor/bashscripts/update-forticlient-dns.sh "your_secret_root_password_here"</script>
</script>
</on_connect>
4/Retournez à la console Forticlient, cliquez sur la serrure dans le coin inférieur gauche, puis passez à -Préférences> Généralités et cliquez sur le bouton RESTORETORE Bouton: Localisez votre fichier de configuration mis à jour et c'est tout, votre configuration DNS sera mise à jour à chaque fois que vous vous connectez au VPN.
Améliorer la réponse de @ Elmart un peu (je pense).
#!/bin/bash
scutil <<EOF
d.init
get State:/Network/Service/forticlientsslvpn/IPv4
d.add InterfaceName ppp0
set State:/Network/Service/forticlientsslvpn/IPv4
EOF
ROUTE_OUT=$(route get www.google.com)
GATEWAY=$(echo "${ROUTE_OUT}"|grep gateway|cut -d':' -f2|xargs)
INTERFACE=$(echo "${ROUTE_OUT}"|grep interface|cut -d':' -f2|xargs)
echo "Fixing $INTERFACE with gateway $GATEWAY"
route delete default
route delete -ifscope $INTEFACE default
route add -ifscope $INTERFACE default $GATEWAY
route add -net 0.0.0.0 -interface $INTERFACE
De cette façon, le script n'a pas besoin d'être édité (et des interfaces changeantes ne devraient pas être un problème). xargs
est utilisé pour dépouiller les espaces.
J'ai aussi ajouté (bien que je ne sache pas si ceci est une amélioration):
rootcheck () {
if [ $(id -u) != "0" ]
then
echo "We need Sudo permissions to run this script"
Sudo "$0" "$@" # Modified as suggested below.
exit $?
fi
}
rootcheck "$@"
Au tout début du script pour rappeler aux gens d'utiliser sudo.