Kill Switch: Bug in NordVPN für Linux – SSH nicht mehr möglich

1 September 2018 Kein Kommentar Autor: Jürgen (jdo)

Ich habe gestern beschrieben, den NordVPN Client für Linux getestet zu haben. Ich habe mich ziemlich gefreut, dass der Client für die Kommandozeile auch für den Raspberry Pi funktioniert. Da ich meinen Raspberry Pi 3 fast ausschließlich headless betreibe, kommt mir das entgegen. Ich kann zwar via Remmina auch auf die grafische Oberfläche zugreifen, mach ich aber sehr selten. Gefreut habe ich mich noch, dass der Kill Switch im NordVPN Client für Linux einwandfrei funktioniert. Allerdings funktioniert er zu gut.

Tipp: NordVPN (derzeit zum Schnäppchenpreis) gibt es derzeit zum Schnäppchenpreis!

Was ist passiert?

Ich bin via SSH mit dem Raspberry Pi verbunden und kann mich via

nordvpn c

mit dem VPN (Virtual Private Network) verbinden. Meine SSH-Sitzung bleibt bestehen. Allerdings kann ich keine neue SSH-Sitzung aufmachen und wenn ich mich vom Pi abmelde, komme ich nicht mehr drauf. Auch ein ping ist nicht mehr möglich. Das Gerät ist einfach aus meinem LAN nicht mehr erreichbar.

Witzigerweise funktioniert es auf die andere Seite. Habe ich noch eine Sitzung auf dem Pi offen, verbinde mich mit dem VPN und pinge dann mein InfinityBook an, funktioniert das.

Gut, dachte ich mir, vielleicht liegt es irgendwie am Pi beziehungsweise an Raspbian. Vielleicht habe ich etwas konfiguriert, das sich hier nun beißt. Deswegen wurde eine jungfräuliche virtuelle Maschine mit Linux Mint 19 gestartet und das Szenario abermals durchgespielt. Gleiches Ergebnis: Sobald ich mit NordVPN verbunden war, konnte ich keine SSH-Sitzung mehr zu Raspbian oder Linux Mint herstellen.

Ab diesem Zeitpunkt hatte ich schon den Kill Switch in Verdacht. Der ist dafür zuständig, das Gerät vollständig von anderen Netzwerken außer dem VPN abzuschotten. Fällt die Verbindung zum VPN-Netzwerk aus, würde das Gerät komplett den Zugang zum Internet verlieren. Sinnvoll ist das zum Beispiel in einem Café oder einem offenen WLAN, in denen Du nicht aus Versehen Daten exponieren möchtest, nur weil das VPN Schluckauf hat.

Der Kill Switch scheint sich derzeit nicht deaktivieren zu lassen

Kill Switch ist deaktiviert, aber anscheinend nur auf dem Papier

Das hat nicht funktioniert

Im Netzwerk gibt es einige Lösungen mit Routen, die ich versucht habe. Hat alles nichts geholfen, also wurde der Support via E-Mail bemüht. Loben muss ich, dass die Antworten sehr flott kamen. Also ich habe keine 15 Minuten auf Antworten warten müssen.

Das Problem hatte ich so genau wie möglich beschrieben und als erste Antwort kam ein sehr ähnlicher Lösungsansatz, den ich schon im Web gefunden hatte. Ich soll Routen hinzufügen, hieß es. Diese beiden Befehle möchte ich auf dem Remote Client ausführen:

sudo ip rule add from <ip address of the remote client> lookup 10
sudo ip route add default via <ip address of the default gateway/router> table 10

Gebracht hat es allerdings nichts. Ich hatte immer noch das gleiche Problem. Also ging es zurück zum Support und als nächster Vorschlag kam:

ip route add raspberry_ip via default_gateway_ip dev eth1

Das hat ebenfalls nicht gefruchtet. Ich habe abermals den Support angeschrieben und gefragt, ob sie das getestet haben. Weiterhin habe ich angemerkt, dass ich wirklich den Kill Switch in Verdacht habe, der immer aktiv scheint.

Darauf hin hat mir der Support geraten, ich soll einfach mal wie hier beschrieben eine OpenVPN-Verbindung über eine Konfigurationsdatei .ovpn herstellen und dann SSH versuchen.

sudo openvpn [Dateiname.ovpn]

Das hat funktioniert. Zu diesem Zeitpunkt war ziemlich klar, dass der NordVPN Client für Linux wohl einen Bug hat und nicht so funktioniert, wie er soll. Zurück zum Support und nun bekam ich eine funktionierende Lösung.

Über iptables den Kill Switch wieder deaktivieren

Der Kill Switch oder Notausschalter wird mithilfe von iptables umgesetzt. Der Support hat mir geraten, die entsprechenden Regeln zu löschen und mir dafür folgende Befehle für IPv4 und Pv6 geschickt:

iptables --flush nordvpn_killswitch_ex
iptables --flush nordvpn_killswitch
iptables --flush nordvpn_dns_exceptions
iptables --flush nordvpn_dns
iptables --flush nordvpn_input
iptables --flush nordvpn
iptables --flush OUTPUT
iptables --delete-chain nordvpn_killswitch_ex
iptables --delete-chain nordvpn_killswitch
iptables --delete-chain nordvpn_dns_exceptions
iptables --delete-chain nordvpn_dns
iptables --delete-chain nordvpn_input
iptables --delete-chain nordvpn

ip6tables --flush nordvpn_input
ip6tables --flush nordvpn
ip6tables --flush nordvpn_forward
ip6tables -D INPUT -j nordvpn_input
ip6tables -D OUTPUT -j nordvpn
ip6tables -D FORWARD -j nordvpn_forward
ip6tables --delete-chain nordvpn_forward
ip6tables --delete-chain nordvpn
ip6tables --delete-chain nordvpn_input

Nachdem ich mich bei NordVPN eingewählt habe, muss ich danach die iptables-Befehle ausführen. Das musst Du im Moment jedes Mal machen, wenn Du Dich bei NordVPN einwählst, weil mit der Einwahl die Regeln für iptables etabliert werden. Bis zu einer neuen Version musst Du Dir mit einem Workaround helfen.

Eine Option wäre, die Befehle in eine ausführbare Datei zu schreiben. Danach verbindest Du Dich wie folgt mit dem VPN:

nordvpn c && sudo /Pfad/zu/Deiner/flush-Datei.sh

Das funktioniert auf jeden Fall bei mir und ich kann vorerst damit leben.

Warum ist Dir das eigentlich wichtig?

Zunächst einmal habe ich einen Bug gefunden. 🙂

Ist der Raspberry Pi auch nach der Einwahl in das VPN aus dem LAN erreichbar, kann ich ihn theoretisch als VPN-Router benutzen. NordVPN erlaubt zwar sowieso 6 Geräte gleichzeitig, aber es geht einfach um ich könnte, wenn ich wollte. Interessiert mich eben.

Als schnellen Test habe ich den Rasberry Pi, der mit NordVPn verbunden war, via sshuttle als VPN-Router missbraucht. Schön ist das so nicht, aber eine Quick&Dirty-Lösung ist es und für einen Test taugt es allemal. Willst Du über SSH unter Android testen, dann sieh Dir Ki4a an.

Nette Pi-Konstellation

Ich habe noch ein paar Q-Einladungen übrig, aber nicht mehr viele!

Du kannst gerne Deinen Senf zu diesem Beitrag geben: Hier geht es zu den Kommentaren




Schreiben macht durstig! Eine kleine Erfrischung kann daher nie schaden. Wem dieser freie Artikel gefallen hat, der darf mir gerne einen frisch gezapften Hopfen-Tee ausgeben (Paypal - der Spenden-Knopf
)
oder

Bitcoin-Adresse: 17F1hqc9LgsAC19DPv5PaRbqsEhuE8AmAA

Ethereum-Adresse: 0x9cc684575721dc07b629ad5d81b43ab4b992e76e

Verge-Adresse: DJaJtZeW494xhnRJJt19Lnt2R5pz7zRp5A

Ich freue mich über jede noch so kleine Spende. Vielen Dank und Prost!

 
 Alle Kommentare als Feed abonnieren

Antworten