Mullvad: Ausschließlich Browser über SOCKS5 ins VPN tunneln – Inverse Split Tunneling (Android/Desktop)

Der VPN-Dienstleister Mullvad bietet zwar Split Tunneling an, allerdings ist die Umsetzung nicht jedermanns Geschmack:

Split tunneling allows you to exclude some apps from the VPN so they will use your regular Internet connection. This will for example allow you to access some websites that are blocking VPN services. The Mullvad app for Windows, Linux and Android supports split tunneling.

Es ist jedoch nicht möglich, Mullvad so zu konfigurieren, dass nur bestimmte Anwendungen durch das VPN getunnelt werden, während alle andere ausgeschlossen sind – sozusagen Inverse Split Tunneling.

Einrichtung am Desktop

Nachfolgend möchte ich kurz eine Lösung skizzieren, mit dem alle Anwendungen/Apps, die SOCKS5 unterstützen, durch das Mullvad-VPN getunnelt werden, während alle anderen Anwendungen unbeeinflusst bleiben. Der gesamte Datenverkehr fließt standardmäßig also außerhalb des VPNs, und nur bestimmte Anwendungen nutzen das VPN. Mullvad selbst beschreibt diese Lösung auf ihrer Website, allerdings auf verschiedenen Unterseiten verteilt. Hier ist eine kurze Zusammenfassung der notwendigen Schritte für den Desktop:

  • Installiert zunächst OpenVPN (Windows, Linux, macOS) auf eurem Rechner.
  • Anschließend meldet ihr euch bei Mullvad an und öffnet den OpenVPN-Konfigurator. Wählt eure Plattform aus, nehmt eure Einstellungen vor und ladet das Zip-Archiv mit der generierten Konfiguration herunter.
  • Entpackt das Zip-Archiv und baut mit der heruntergeladenen OpenVPN-Konfiguration eine VPN-Verbindung zu Mullvad auf. Überprüft mit dem Connection Check, ob die Verbindung funktioniert. Terminiert die VPN-Verbindung wieder.
  • Danach nehmt ihr die folgende Anpassung an der mullvad_xx.conf (Linux/macOS) / mullvad_xx.ovpn (Windows) vor:
    • Ergänzt folgende zwei Zeilen:
      route-nopull
      route 10.0.0.0 255.0.0.0
    • Bei Windows muss zusätzlich die Zeile block-outside-dns entfernt werden.
  • Alle Anwendungen, die nun durch das VPN getunnelt werden sollen, müssen so konfiguriert werden, dass sie den SOCKS5-Proxy (10.8.0.1:1080) von Mullvad nutzen.
    • Beispielhaft für Firefox:
      • Öffnet die Verbindungs-Einstellungen.
      • Wählt Manuelle Proxy-Konfiguration.
      • Unter SOCKS-Host tragt ihr 10.8.0.1 ein. Weiter hinten in der Zeile bei Port 1080.
      • Setzt noch ein Häkchen bei SOCKS v5 und weiter unten bei Bei Verwendung von SOCKS v5 den Proxy für DNS-Anfragen verwenden.
    • Beispielhaft für Chrome-basierte Browser (Chromium, Brave etc.):
      • Bearbeitet den Starter/Desktop Shortcut und fügt --proxy-server=socks5://10.8.0.1 hinzu.
    • Weitere Browser-Konfigurationen (auch für Android (Firefox)) findet ihr bei Mullvad.
  • Stellt anschließend wieder eine VPN-Verbindung her und startet den Browser neu. Als Test können nun zwei Browser verwendet werden, von denen einer den SOCKS5-Proxy von Mullvad konfiguriert hat. Im Browser mit dem SOCKS5-Proxy sollte der Connection Check funktionieren, im anderen (natürlich) nicht.
  • Nach dem Aufbau der VPN-Verbindung zu Mullvad kann der Browser den SOCKS5-Proxy (10.8.0.1:1080) erreichen und über die VPN-Verbindung kommunizieren. Alle anderen Anwendungen/Apps sind davon nicht betroffen bzw. der Datenverkehr wird nicht getunnelt.

Einrichtung unter Android

Mit dem OpenVPN-Client für Android in Kombination mit Firefox (Android) sollte es ebenfalls möglich sein, den Browser-Verkehr über das VPN zu tunneln, während alle anderen Apps außerhalb des VPNs kommunizieren. Die dargestellte Lösung ist also nicht auf Desktop-Systeme beschränkt. Mullvad beschreibt dazu folgende Anpassungen an der about:config für Firefox (Android):

  • Enter about:config in the address bar and click on Send.
  • In the search field, enter proxy.
  • Scroll down to network.proxy.socks and enter 10.8.0.1.
  • Scroll down to network.proxy.socks_port and enter 1080.
  • Change the value for network.proxy.socks_remote_dns to True.
  • Change the value for network.proxy.socks_version to 5.
  • Change network.proxy.type to 1.
  • Clear the field for network.proxy.http.
  • Clear the field for network.proxy.ssl.
  • Click on the back button to save the changes.

Hinweis: Die mobile Variante für Android habe ich nicht getestet.

Der Kuketz-Blog ist spendenfinanziert! Mitmachen ➡