Bearbeitete Antwort
(Re) verbesserte die verbesserte Antwort fast aller anderen (@elmart, @ user26312, ich selbst). Änderungen sollten im Skript nicht erforderlich sein:
#!/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
Machen Sie die Datei, in die Sie dies einfügen, ausführbar und führen Sie sie (nach dem Herstellen einer Verbindung mit dem VPN) mit sudo aus. Bevor das Skript Änderungen vornimmt, überprüft es Ihre aktuelle Standardroute und kennt daher Ihr aktuelles Gateway und Ihre aktuelle Schnittstelle.
Alte Antwort
Da dies keine vollständige Lösung ist, müssen Sie nach jedem VPN-Verbindungsaufbau die folgenden zwei allgemeinen Schritte ausführen:
- Wir müssen die Schnittstelle des Tunnels auf einstellen
ppp0
- Standardrouten wiederholen (da 1. implizit das falsche Standardgateway festlegt, sollte der geteilte Tunnel im Folgenden weiterhin ordnungsgemäß funktionieren)
Erstellen Sie eine Datei mit dem Namen scutil-forti
zum Beispiel
d.init
get State:/Network/Service/forticlientsslvpn/IPv4
d.add InterfaceName ppp0
set State:/Network/Service/forticlientsslvpn/IPv4
Wiederholen Sie die Gateway-Routen, und erstellen Sie eine weitere Datei routes-forti
mit (beachten Sie die Zeilen mit den spezifischen Einstellungen für Ihr Netzwerk):
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
jetzt ausführen,
$ cat scutil-forti |sudo scutil ; bash routes-forti
State:/Network/Service/forticlientsslvpn/IPv4
Schlüssel beginnt mit dem Ausführen des VPN-Tunnels und wird gelöscht, wenn der VPN-Tunnel gelöscht wird. Die Routen unterscheiden sich eigentlich nicht von dem, was sie sein sollten.Ich habe die Lösung von @ hbogert in ein übersichtlicheres Einzelskript überarbeitet:
Dies setzt voraus, dass Sie die en0-Schnittstelle und das Standard-Gateway 192.168.1.1 verwenden. Wenn nicht, ersetzen Sie diese durch Ihre entsprechenden Werte. Wenn Sie sie nicht kennen, geben Sie ein,
route get www.google.com
um sie zu erhalten. Dann:chmod u+x fix-vpn
).sudo fix-vpn
) aus, sobald Sie eine Verbindung zu vpn hergestellt haben.Ich habe es versucht und es funktioniert. Wie gesagt, dies ist nur eine Überarbeitung einer früheren Lösung. Ich habe es nur als separate Antwort gepostet, weil ich nicht genug Platz in einem Kommentar hatte.
Übrigens dachte ich auch, dass dies in ein
/etc/ppp/ip-up
Skript aufgenommen werden könnte, damit es beim Verbinden automatisch ausgeführt wird. Aber aus irgendeinem Grund funktioniert es nicht so. Wenn jemand das erklären / verbessern kann, bitte.quelle
Ich konnte eine ältere Version von Forticlient verwenden und bestätigte, dass es funktioniert!
Hier ist der Link dazu in meiner Dropbox:
https://www.dropbox.com/s/p43ssvp0gusmzeq/forticlientsslvpn_macosx_4.0.2297.dmg?dl=0
quelle
UPDATE: Das Herunterladen und Installieren der neuesten und offiziellen Version 5.4.1 für Mac OS X behebt alle Probleme unter Mac OS X El Capitan.
Wie im Fortinet-Forum beschrieben , sollte man die neueste (noch unveröffentlichte) Version des FortiClient herunterladen, um die Probleme unter Mac OS X El Capitan zu beheben:
https://www.dropbox.com/sh/cb0j4pxw1f8nq84/AABHzZW1bpx1VjzYAmiK00S9a?dl=0
Dies war die einfachste Lösung für mich.
quelle
Die Antwort von @ elmart ein wenig verbessern (glaube ich).
Auf diese Weise muss das Skript nicht bearbeitet werden (und das Ändern von Schnittstellen sollte kein Problem sein).
xargs
wird verwendet, um das Leerzeichen zu entfernen.Ich habe auch hinzugefügt (obwohl ich nicht weiß, ob dies eine Verbesserung ist):
Bis zum Anfang des Skripts, um die Leute daran zu erinnern, Sudo zu verwenden.
quelle
route get
Befehl zu verwenden, um die Abhängigkeit von DNS zu beseitigen.$ netstat -rn
, um das Gateway und die Schnittstelle zu erhalten.Ich habe das Skript von hbogert genommen und es für mich und einen anderen Mitarbeiter in Applescript verpackt. Es ist hier verfügbar: https://www.dropbox.com/s/lh0hsqdesk3i0n7/Execute-Post-VPN-Connection.app.zip?dl=0
Stellen Sie einfach eine Verbindung zu VPN her, führen Sie die App aus und geben Sie Ihr Administratorkennwort ein (erforderlich für sudo). HINWEIS: MUSS IN / Anwendungen / GESPEICHERT WERDEN
quelle
Ich habe das Problem für mich gelöst, indem ich die DNS-Einstellungen neu konfiguriert habe, um Google DNS-Server vor den von FortiClient bereitgestellten zu verwenden. Leider muss dies nach jeder erneuten Verbindung erfolgen.
Details dazu finden Sie hier .
quelle
In meiner aktuellen OS X-Version (Sierra 10.12.6) und FortiClient 5.6.1 scheint es so, als ob der "set" -Aufruf nichts fortsetzt, wenn ServerAddresses mehr als 2 Adressen hat (wenn Sie "erhalten"), ist nichts gewesen Aktualisiert). Um dies zu umgehen, habe ich beschlossen, nur die erste FortiClient-DNS-Adresse beizubehalten und mit meiner öffentlichen DNS-Adresse (8.8.8.8) zusammenzuführen.
Darüber hinaus würde ich vorschlagen, das Bash-Skript automatisch auf FortiClient Connect auszuführen: Dies kann durch Exportieren des FortiClient-Konfigurationsskripts und anschließendes erneutes Importieren erfolgen
Vollständige Anleitung unten:
1 / Erstellen Sie das folgende Bash-Skript und speichern Sie es irgendwo (in meinem Fall war es in
~/bashscripts/update-forticlient-dns.sh
). Vergessen Sie nicht, das<FIRST IP ADDRESS FOR FORTICLIENT DNS>
durch das Ergebnis zu ersetzen,scutil --dns | grep "nameserver\[0\]"
während Ihre FortiClient-Verbindung besteht2 / Führen Sie FortiClient aus, gehen Sie zu Einstellungen > Allgemein und klicken Sie auf die Schaltfläche Sichern , um Ihre FortiClient-Konfiguration in eine Datei zu exportieren
3 / Suchen und bearbeiten Sie in dieser Datei den Knoten / forticlient_configuration / vpn / sslvpn / connection / connection [name = "IHRE VERBINDUNG"] / on_connect / script / script und rufen Sie Ihr Skript darin auf:
4 / Kehren Sie zur FortiClient-Konsole zurück, klicken Sie auf das Schloss in der unteren linken Ecke, gehen Sie zu Einstellungen > Allgemein und klicken Sie auf die Schaltfläche Wiederherstellen : Suchen Sie Ihre aktualisierte Konfigurationsdatei, und fertig , Ihre DNS-Konfiguration wird jedes Mal im laufenden Betrieb aktualisiert Stellen Sie eine Verbindung zum VPN her.
quelle