Folgendes funktioniert für mich. Führen Sie diese aus, nachdem Sie eine Verbindung zum Cisco VPN hergestellt haben. (Ich verwende den integrierten Cisco-Client von OS X, nicht den Cisco-Markenclient.)
sudo route -nv add -net 10 -interface utun0
sudo route change default 192.168.0.1
Ersetzen Sie 10
im ersten Befehl das Netzwerk, das sich auf der anderen Seite des Tunnels befindet.
Ersetzen 192.168.0.1
Sie durch das Gateway Ihres lokalen Netzwerks.
Ich habe es in ein Bash-Skript geschrieben:
$ 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
Ich habe auch eine Erklärung gefunden, wie dies automatisch ausgeführt wird, wenn Sie das VPN verbinden, aber es ist spät am Freitag und ich habe keine Lust, es zu versuchen :)
Bearbeiten:
Ich habe seitdem den Job verlassen, bei dem ich das Cisco VPN verwendet habe, daher stammt dies aus dem Speicher.
Der 10
erste Befehl ist das Netzwerk, das Sie über das VPN weiterleiten möchten. 10
ist eine kurze Hand für 10.0.0.0/8
. In Tuan Anh Trans Fall sieht es so aus, als wäre das Netzwerk 192.168.5.0/24
.
Welches Gateway im zweiten Befehl angegeben werden soll, sollte Ihr lokales Gateway sein. Wenn Sie sich bei einem VPN anmelden, das Split-Tunneling verhindert, wird diese Richtlinie durchgesetzt, indem Sie Ihre Routing-Tabellen so ändern, dass alle Pakete über die virtuelle Schnittstelle weitergeleitet werden. Sie möchten also Ihre Standardroute auf die vor dem Einstieg in das VPN festgelegte Route zurücksetzen .
Der einfachste Weg, das Gateway herauszufinden, besteht darin, netstat -rn
vor der Anmeldung am VPN die IP-Adresse rechts vom "Standard" -Ziel zu überprüfen. Zum Beispiel sieht es auf meiner Box jetzt so aus:
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
Mein Gateway ist 10.0.1.1
- es befindet sich rechts vom "Standard" -Ziel.
Mit den Informationen von mehaase habe ich ein Python-Skript geschrieben, das diesen Vorgang auf dem Mac wirklich vereinfacht. Wenn Sie es ausführen, speichert das Skript Ihre Firewall-Informationen, startet den AnyConnect-Client, wartet auf die Anmeldung und repariert dann die Routen und die Firewall. Führen Sie einfach das Skript vom 'Terminal' aus.
quelle
Das Python-Skript in dieser vorherigen Antwort war hilfreich, es hat sich jedoch nicht um die Routen gekümmert, die AnyConnect verwendet hat, um andere Schnittstellen auf dem Gerät zu übernehmen (z. B. VMware-Schnittstellen). Es war auch nicht in der Lage, mehrere VPN-Netzwerke zu verwalten.
Hier ist das Skript, das ich benutze:
quelle
Höchstwahrscheinlich sollte Ihr Administrator VPN-Verbindungen für die Verwendung des lokalen Routings für die Subnetze 10.121. * Und 10.122. * Einrichten und den Remotecomputer (Ihren Heimcomputer) die restlichen Anforderungen weiterleiten lassen. (Es spart ihnen Bandbreite und Haftung)
Verwenden Sie den "VPN-Client" von Cisco? OS OS X?
Wenn Sie das VPN von OS X verwenden (das über das Einstellungsfenster für das Netzwerk eingerichtet wird), sollten Sie auf "Erweitert" klicken und die Registerkarte "VPN on Demand" auswählen können. Stellen Sie dann die für die Verwendung des VPN erforderlichen Subnetze bereit.
quelle
Ich wollte eine native 'App', die ich bei der Anmeldung ausführen kann (und die ausgeführt wird / ausgeblendet bleibt ), um das Routing für geteilte Tunnel zu aktivieren, ähnlich einer Funktion von Locamatic . Vielleicht gabel ich Locamatic irgendwann und spiele damit. Ich kann dieses AppleScript auch auf Github hochladen. Ich wollte mich nicht mit einem Daemon anlegen, wie diese Antwort nahelegt.
In diesem Skript wird davon ausgegangen, dass VPN den Standardnamen
VPN (Cisco IPSec)
und die VPN-Route10.10.10.1/22
> hat10.10.20.10
. Diese müssen geändert / zusätzliche Routen hinzugefügt werden. Führen Sie terminal> aus,netstat -rn
wenn eine VPN-Verbindung besteht (bevor Sie dieses Skript aktivieren), um VPN-hinzugefügte Routen anzuzeigen.Dieses Skript generiert auch Benachrichtigungen im Growl-Stil im Notification Center :)
Ich hatte einige Probleme mit der Antwort von Mark E. Haase , als mein Cisco VPN das vorhandene Gateway von einer auf eine (für die en0-Schnittstelle spezifische) Route änderte und das VPN-Gateway als Route hinzufügte , wodurch zwei Standardgateways gelöscht und erneut hinzugefügt werden mussten das ursprüngliche Standard-Gateway
UCSc
UGScI
UCS
UGSc
Gott sei Dank für StackExchange / google, dies ist mein erstes AppleScript und ich hätte es ohne ein paar Stunden Googeln nicht zusammenstellen können.
Vorschläge / Korrekturen / Optimierungen erwünscht!
AppleScript ( GitHubGist ):
als app speichern:
Rechtsklick> Paketinhalt anzeigen, Folgendes zu info.plist hinzufügen (dies verbirgt das App-Symbol vor dem Dock, was die Verwendung von Activity Monitor oder Terminal erforderlich macht>
pkill -f 'Split Tunnel'
um die App zu beenden, weglassen, wenn Sie ein Dock-Symbol möchten:Erstellen Sie eine neue einzeilige
routeNOPASSWD
Datei (ohne Erweiterung) mit dem folgenden Code GENAU (dies kann den Sudo-Zugriff verhindern, wenn dies nicht korrekt ausgeführt wird.visudo
Weitere Informationen finden Sie bei Google. Dadurch können die Sudo-Befehle im AppleScript OHNE Kennworteingabeaufforderung ausgeführt werden. Lassen Sie sie aus, wenn Sie möchten eine Passwortabfrage, wenn die Routing-Tabelle geändert werden muss):Kopieren Sie diese Datei nach
/etc/sudoers.d
Führen Sie die folgenden Befehle im Terminal aus (der zweite Befehl
sudo route
fordert zur Eingabe eines Kennworts auf - dies ermöglicht, dass die Befehle im AppleScript OHNE Aufforderung zur Kennworteingabe ausgeführt werden. Lassen Sie dies aus, wenn eine Kennwortaufforderung gewünscht wird, wenn das Skript die Routingtabelle ändert.)Fügen Sie die App schließlich zu Systemeinstellungen> Benutzer und Gruppen> Anmeldeelemente hinzu
quelle
Sie sollten in der Lage sein, den Administrator des Routers, zu dem Sie eine Verbindung herstellen, zu fragen, um eine separate "Gruppe" einzurichten, die Split-Tunneling ausführt, und eine PCF-Datei mit dem Gruppennamen und dem Gruppenkennwort für diese Gruppe zu erhalten.
quelle
Ich hatte das gleiche Problem und habe es dank @mehaase zum Laufen gebracht
Nachdem Sie das
~/vpn.sh
von @mehaase beantwortete Skript erstellt haben, können Sie es mit den folgenden Schritten in ein ausführbares Anwendungsautomatisierungsskript einfügen:do shell script "sudo ~/vpn.sh" with administrator privileges
Möglicherweise müssen Sie auch
chmod 700 ~/vpn.sh
vom Terminal aus ausgeführt werden, um dem Skript Ausführungsberechtigungen zu erteilen.Nachdem Sie sich mit dem VPN verbunden haben, können Sie dieses Anwendungsskript einfach ausführen. Geben Sie Ihr Administratorkennwort ein und klicken Sie auf OK - Fertig. :)
quelle