So erstellen Sie einen VPN-Kill-Switch für Mac OS X

3452
John Schlong

Ich möchte, dass die Internetverbindung vollständig deaktiviert wird, wenn die VPN-Verbindung unterbrochen wird. Ich verbinde mich über Viscosity mit meinem VPN (privatevpn.com).

Ich habe alles im Buch versucht. Ich habe versucht, ein Trennungsskript in Viscosity zu haben, aber sie lösen nie oder inkonsistent aus und lassen meine Verbindung verwundbar. Ich habe auch Routing-Tricks in Viscosity ausprobiert, aber es funktioniert auch nicht.

Auf meinen Ubuntu-Rechnern habe ich eine Lösung, die perfekt funktioniert. Ich verwende ufw-Regeln, um die Firewall zu steuern. Um eine Verbindung zu meinem VPN herzustellen, muss ich UFW deaktivieren, und sobald das VPN eine Verbindung hergestellt hat, aktiviere ich UFW. Dadurch bleibt die Verbindung dicht.

Auf dem Mac gibt es etwas namens pf. Ich kann zwar pf so konfigurieren, dass es genauso funktioniert wie meine ufw-Regeln, aber ich verstehe nicht, wie ich es konfigurieren soll.

Hier sind meine UFW-Regeln, die ich auch auf dem Mac ausführen möchte. Vielleicht kann mir jemand helfen, pf so zu konfigurieren, dass er die gleichen Regeln verwendet.

Status: aktiv Protokollierung: ein (niedrig) Standardeinstellung: verweigern (eingehend, verweigern (ausgehend), deaktiviert (geroutet)) Neue Profile: überspringen

Von überall aus handeln ALLOW IN 193.180.119.0/24 Anywhere ALLOW OUT 193.180.119.0/24

3
Keine Mac-Netzwerkexperten in der Nähe? John Schlong vor 7 Jahren 0

2 Antworten auf die Frage

3
nbari

Das Beste, was ich gefunden habe, ist die Verwendung des auf Mac OS X verfügbaren PF. Nachdem Sie sich mit Ihrem VPN-Anbieter verbunden haben, müssen Sie nur die IP-Adresse ändern.

Erstellen Sie eine Datei, ~/killswitch/pf.confdie dies enthält

# Options set block-policy drop set ruleset-optimization basic set skip on lo0  # Interfaces wifi = "en1" vpn = "utun1"  # Block everything block out all block in all  # Outbound: Allow only VPN  pass out on $wifi proto from any to 81.171.71.XX  # Allow traffic for VPN pass out on $vpn all 

Überprüfen Sie Ihre Schnittstellen noch einmal, in meinem Fall en1ist dies der WLAN- und uten1der VPN-Tunnel.

Wechseln Sie 81.171.71.XXzu der IP, die Sie erhalten, wenn Sie eine Verbindung herstellen.

Aktivieren Sie pf

$ sudo pfctl -e 

Laden Sie die Regeln:

$ sudo pfctl -Fa -f /path/to/pf.conf 

Deaktivieren Sie pf:

$ sudo pfctl -d 

Ich musste dies aufgrund eines Problems mit ipvanish implementieren, hauptsächlich, weil die Anwendung abstürzte, was dazu führte, dass das VPN ausfiel und der Datenverkehr auf die Standardeinstellung zurückkehrte, keine verschlüsselte Route.

aktualisieren

Sie können versuchen, Killswitch zu versuchen, es kann dies alles automatisch für Sie tun.

OK, danke, ich habe AirVPN-Client für Mac OS X verwendet und es funktioniert sofort. Nur für den Fall, dass jemand in der Zukunft etwas Zeit sparen möchte. John Schlong vor 7 Jahren 0
Ich habe gerade auf macOS 10.12.6 "killswitch" ausprobiert und es funktioniert perfekt. Installiere mit `brew install killswitch`. Wenn dies fehlschlägt, probieren Sie zuerst `brew tap vpn-kill-switch / killswitch` und installieren Sie dann. Auf diese Weise kann die Flasche möglicherweise nicht heruntergeladen werden, sie wird jedoch vom Quellcode für Sie kompiliert. iled vor 5 Jahren 1
0
plopper

Könnte dieses Skript den Trick tun?

#!/bin/bash  while true  do result=$(scutil --nc list | grep Connected) if [ -z "$result" ]; then killall Transmission exit fi  done