Poniższe działa dla mnie. Uruchom je po połączeniu z Cisco VPN. (Używam wbudowanego klienta Cisco systemu OS X, a nie klienta marki Cisco).
sudo route -nv add -net 10 -interface utun0
sudo route change default 192.168.0.1
Zastąp 10
w pierwszym poleceniu siecią znajdującą się po drugiej stronie tunelu.
Zastąp 192.168.0.1
bramą sieci lokalnej.
Umieszczam go w skrypcie bash, takim jak ten:
$ 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
Znalazłem też wyjaśnienie, jak uruchomić to automatycznie po podłączeniu VPN, ale w piątek jest późno i nie mam ochoty tego próbować :)
Edytować:
Od tego czasu porzuciłem pracę, w której korzystałem z Cisco VPN, więc pochodzi to z pamięci.
10
W pierwszym poleceniu jest sieć, którą chcesz trasie nad VPN. 10
jest krótką ręką dla 10.0.0.0/8
. W przypadku Tuan Anh Tran wygląda na to, że sieć jest 192.168.5.0/24
.
Jeśli chodzi o to, którą bramę określić w drugim poleceniu, powinna to być brama lokalna. Gdy logujesz się do sieci VPN, która zapobiega tunelowaniu dzielonemu, wymusza tę zasadę, zmieniając tabele routingu, tak aby wszystkie pakiety były kierowane przez interfejs wirtualny. Więc chcesz zmienić domyślną trasę z powrotem na to, co było przed wejściem do VPN .
Najłatwiejszym sposobem na netstat -rn
znalezienie bramki jest uruchomienie przed zalogowaniem się do sieci VPN i sprawdzenie adresu IP po prawej stronie „domyślnego” miejsca docelowego. Na przykład oto, jak teraz wygląda na moim pudełku:
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
Moja brama to 10.0.1.1
- znajduje się na prawo od „domyślnego” miejsca docelowego.
Korzystając z informacji z mehaase, napisałem skrypt w języku Python, który naprawdę upraszcza ten proces na komputerze Mac. Po uruchomieniu skrypt zapisze informacje o zaporze, uruchomi klienta AnyConnect, zaczeka na logowanie, a następnie napraw trasy i zaporę. Wystarczy uruchomić skrypt z „terminalu”.
źródło
Skrypt Pythona w poprzedniej odpowiedzi był pomocny, jednak nie zajmował się trasami, za pomocą których AnyConnect przejmował inne interfejsy na urządzeniu (takie jak interfejsy VMware). Nie był także w stanie obsłużyć wielu sieci VPN.
Oto skrypt, którego używam:
źródło
Bardziej niż prawdopodobne, że administrator powinien skonfigurować połączenia VPN w celu korzystania z lokalnego routingu dla podsieci 10.121. * I 10.122. * I pozwolić, aby zdalny (komputer domowy) kierował wszystkie pozostałe żądania. (oszczędza to przepustowość i odpowiedzialność)
Czy używasz „klienta VPN Cisco”? OS OS X?
jeśli korzystasz z VPN OS X (skonfigurowanego przez okienko preferencji sieciowych), powinieneś być w stanie kliknąć „zaawansowane” i wybrać zakładkę „VPN na żądanie”. następnie podaj niezbędne podsieci do korzystania z sieci VPN.
źródło
Chciałem mieć natywną „aplikację”, którą mogę uruchomić przy logowaniu (i nadal działać / ukryć), aby włączyć routing Split Tunnel, podobny do funkcji Locamatic . Być może kiedyś rozwidlę Locamatic i będę się nim bawić. Mogę również przesłać ten AppleScript do Github. Nie chciałem zadzierać z demonem, jak sugeruje ta odpowiedź.
Ten skrypt zakłada, że VPN ma domyślną
VPN (Cisco IPSec)
nazwę, a trasa VPN to10.10.10.1/22
>10.10.20.10
. Będą musiały zostać zmienione / dodane dodatkowe trasy. Uruchom terminal>netstat -rn
po podłączeniu VPN (przed włączeniem tego skryptu), aby zobaczyć trasy dodane przez VPN.Ten skrypt generuje również powiadomienia w stylu warczenia w Centrum powiadomień :)
Wpadłem na pewne problemy z Mark E. Haase „s odpowiedzi jako mój modyfikuje Cisco VPN istniejącej bramy od A
UCSc
doUGScI
(en0 interfejsu określonej trasie) i dodaje bramą VPN jakoUCS
trasy, konieczność usunięcia dwóch bram domyślnych oraz dodawanie plecy oryginalnaUGSc
brama domyślnaDzięki Bogu za StackExchange / google, to jest mój pierwszy AppleScript i nie byłbym w stanie go złożyć bez kilku godzin googlingu.
Sugestie / poprawki / optymalizacje mile widziane!
AppleScript ( GitHubGist ):
zapisz jako aplikację:
kliknij prawym przyciskiem myszy> pokaż zawartość pakietu, dodaj następujące informacje do info.plist (ukrywa to ikonę aplikacji przed dokiem, co wymaga użycia Monitora aktywności lub terminala>,
pkill -f 'Split Tunnel'
aby zamknąć aplikację, pomiń, jeśli CHCESZ ikonę stacji dokującej:utwórz nowy
routeNOPASSWD
plik jednowierszowy (bez rozszerzenia) DOKŁADNIE (może to uniemożliwić dostęp do sudo, jeśli zostanie wykonane nieprawidłowo, google,visudo
aby uzyskać więcej informacji - pozwala to na uruchamianie poleceń sudo w AppleScript BEZ monitu o hasło, pomiń, jeśli CHCESZ monit o hasło, kiedy należy zmienić tabelę routingu):skopiuj ten plik do
/etc/sudoers.d
uruchom następujące polecenia w terminalu (drugie polecenie wyświetli monit o hasło - pozwala to
sudo route
na uruchamianie poleceń w AppleScript BEZ pytania o hasło, pomiń, jeśli monit o hasło jest wymagany, gdy skrypt zmienia tablicę routingu)na koniec dodaj aplikację do Prefektów systemu> Użytkownicy i grupy> elementy logowania
źródło
Powinieneś być w stanie poprosić administratora routera, z którym się łączysz, o skonfigurowanie oddzielnej „grupy”, która dzieli tunelowanie i daje plik PCF zawierający nazwę grupy i hasło grupy dla tej grupy.
źródło
Miałem ten sam problem i działałem dzięki @mehaase
Po utworzeniu
~/vpn.sh
odpowiedzi udzielonej przez @mehaase możesz umieścić ją w uruchamialnym skrypcie automatyzatora aplikacji, wykonując następujące kroki:do shell script "sudo ~/vpn.sh" with administrator privileges
Może być również konieczne uruchomienie
chmod 700 ~/vpn.sh
z terminala, aby dać skryptowi uprawnienia do wykonywania.Po połączeniu z VPN możesz po prostu uruchomić ten skrypt aplikacji. Wprowadź hasło administratora i kliknij OK - Gotowe. :)
źródło