Automatische Verbindung zu OpenVPN nur bei Verwendung von WLAN, nicht über Ethernet

Automatische Verbindung zu OpenVPN nur bei Verwendung von WLAN, nicht über Ethernet

Ich habe in meinem Heimnetzwerk einen OpenVPN-Server mit TAP-Geräten (anstelle von TUN-Geräten) eingerichtet, sodass Clients, die eine Remoteverbindung zum Netzwerk herstellen, mit demselben Subnetz verbunden werden wie mein (kabelgebundenes) Heimnetzwerk.

Ich habe jedoch einen Laptop, den ich zu Hause über Ethernet andocke und woanders WLAN verwende (ich versuche, zu Hause kein WLAN zu verwenden – in überfüllten Wohnhäusern in Manhattan ist das eine Katastrophe). Ich möchte auch feste IP-Adressen für jedes Gerät in meinem Netzwerk haben, also lege ich die IP-Konfiguration für seinen Ethernet-Adapter fest und verwende dieselbe IP auch für das TAP-Gerät, wenn es mit dem VPN verbunden ist (mit einemClient-Konfigurationsverzeichnisauf der Serverseite).

Gibt es eine gute und minimal hackige Möglichkeit, den OpenVPN-Dienst auf meinem Laptop so zu konfigurieren, dass er nur dann eine Verbindung zu OpenVPN herstellt, wenn die Ethernet-Verbindung nicht aktiv ist? Es ist superpraktisch, den OpenVPN-Dienst automatisch im Hintergrund laufen zu lassen, und ich möchte ihn nicht jedes Mal manuell ausschalten müssen, wenn ich eine Verbindung zu Ethernet herstelle. Aber wenn er versucht, eine Verbindung zu demselben Netzwerk herzustellen, in dem ich mich bereits physisch über VPN befinde, und dabei dieselbe IP-Adresse verwendet, die ich bereits verwende, ist das offensichtlich keine gute Idee ...

Ich bin sicher, dass ich mit Init-Skripten etwas zusammenbasteln könnte, aber ich möchte meine Abweichung von der offiziellen Ubuntu-Konfiguration so gering wie möglich halten. Ich wäre wirklich dankbar, wenn jemand einen „richtigeren“ Ansatz hätte.

Antwort1

Ich habe ein bisschen herumgespielt und eine Lösung gefunden, die zufällig für meine Konfiguration funktioniert. Es ist keine völlig allgemeine Lösung, also kann hoffentlich jemand vorbeikommen und eine robustere Lösung anbieten.

Anstatt OpenVPN auf meinem Laptop bei Ethernet-Verbindung zu deaktivieren, habe ich einfach ufw (Uncomplicated Firewall) auf dem OpenVPN-Server meines Netzwerks so konfiguriert, dass Verbindungen vom lokalen Subnetz abgelehnt werden. Das ist allerdings ein ganz klein wenig komplizierter, als einfach Regeln mit sudo ufw allow ...und zu erstellen sudo ufw deny ...:

  • Wenn Sie ufw auf einem Computer ausführen, der ein VPN mit einem lokalen Netzwerk verbindet (was ich tue), müssen Sie ufw zunächst so konfigurieren, dass die Weiterleitung von Datenverkehr zugelassen wird, da dieser standardmäßig abgelehnt wird. Dies bedeutet, dass Sie DEFAULT_FORWARD_POLICY="DROP"in ändern DEFAULT_FORWARD_POLICY="ACCEPT"müssen /etc/default/ufw.

  • Zweitens müssen Sie darauf achten, die Regeln in der richtigen Reihenfolge hinzuzufügen. ufw verarbeitet die Regeln eine nach der anderen und verwendet die Regel, mit der Sie Verbindungen zu OpenVPN (Port 1149) innerhalb Ihres Subnetzes ablehnen, bevor Sie sie von außerhalb zulassen, nur wenn Sie sie in dieser Reihenfolge erstellen. In meinem Fall bedeutete dies, dass vor dem sudo ufw delete deny from 192.168.16.0/20 to any port 1194Ausführen Folgendes ausgeführt wurde (nein, das ist kein Tippfehler, ich verwende lokal tatsächlich ein /20-Subnetz :D) sudo ufw allow 1194.

  • zuletztmüssen Sie sicherstellen, dass Verbindungen aus Ihrem lokalen Netzwerk tatsächlichTunsieht aus, als kämen sie aus Ihrem lokalen Netzwerk, sodass die UFW-Regel aufgerufen wird.

Der letzte Teil ist wichtig, weil das zunächst nicht der Fall war, als ich die ersten beiden Schritte ausprobiert habe; mein Laptop-OpenVPN ist automatisch so eingerichtet, dass es versucht, eine Verbindung zu meinem VPN unter herzustellen mydomainname.com, das dynamisch meinem Heimrouter zugewiesen ist, der wiederum Port 1194 an den Computer weiterleitet, auf dem mein VPN unter läuft 192.168.16.1. Das ist vielleicht nicht bei allen Routern der Fall, aber zumindest bei meinem Router wird bei einer Verbindung zu mydomainname.cominnerhalb des lokalen Subnetzes eine Verbindung zum OpenVPN-Server hergestellt, der aussieht, als hätte er die IP-Adresse des Routers und nicht die des Laptops. (Und es ist eine lange Geschichte, aber ich möchte eigentlich VPN-Zugriff von anderen Geräten zulassen, die mit dem Router verbunden sind, und zwar in einem anderen Subnetz – ich habe eine ziemlich komplizierte Heimkonfiguration :D).

Die Lösung in meinem Fall bestand letztendlich darin, den DNS-Server meines Routers mit einer statischen Zuweisung von mydomainname.comnach zu konfigurieren 192.168.16.1, sodass dieser mydomainname.comdirekt nach aufgelöst wird, 192.168.16.1andernfalls aber zur externen IP meines Routers. Das funktioniert bei mir, aber bei Ihnen kann es anders sein.

verwandte Informationen