
Ich teste und kalibriere OpenVPN unter Linux und verwende zunächst kostenlose VPNs.
Allen Quellen zufolge, die ich gesehen habe, sollte der OpenVPN-Proxy auf localhost:1194 lauschen. Tatsächlich lauscht er durchgängig auf 0.0.0.0, dem Ursprung, und ein Browser stellt nur dann eine Verbindung zu OpenVPN her, wenn der Proxy auf diese Adresse am üblichen Port eingestellt ist.
0.0.0.0 wird in man openvpn nicht erwähnt. Eine Erwähnung online zeigt diese Adresse in einer Serverimplementierung, aber ich betreibe einen Client mit einem client.ovpn ohne Angabe von 0.0.0.0. Online-Ratgeber warnen im Allgemeinen vor Anwendungen, die am Ursprung lauschen, aber wichtiger noch: Alle Dokumentationen, die ich gesehen habe, gehen davon aus, dass OpenVPN auf localhost:1194 lauscht und Browser auf diesen Proxy eingestellt sein sollten.
Warum lauscht OpenVPN auf der falschen Adresse und wie kann ich das beheben?
Bearbeiten:
Wenn ich mir man openvpn noch einmal ansehe, sehe ich, dass 0.0.0.0 als „Standard-Gateway“ erwähnt wird und dass localhost als Verwaltungs-IP angegeben ist.
Alle Erwähnungen, die ich gesehen habe, in denen es um die Verwendung kommerzieller VPNs mit OpenVPN und um die Verwendung von Browsern mit OpenVPN ging, wiesen auf die Verwendung von localhost:1194 hin oder waren implizit darauf hin. Dies ist auch implizit, da die meisten Proxys auf localhost lauschen (Tor, Privoxy usw.). Trotz des folgenden Kommentars werden OpenVPN und VPN-Clients im Allgemeinen tatsächlich ausführlich diskutiert, als wären sie Proxys – verfügbare Abhördienste wie Socks oder HTTP-Tunnel, auf die eine Anwendung ihre Netzaktivität portiert.
In keinem der von mir gesehenen Proxys wurde erwähnt, dass 0.0.0.0:1194 als funktionierender Proxy eingegeben werden muss. Und tatsächlich würde Firefox nicht mit OpenVPN funktionieren, wenn Adresse:Port nicht explizit angegeben werden.
Die einzigen Tutorials, die ich für iptables mit OpenVPN habe, schlagen lediglich vor, den D-Port anzugeben, aber nie die Adresse, was darauf schließen lässt, dass sich der Port auf dem lokalen Host befindet.
Alle Erwähnungen befinden sich in gespeicherten Dokumenten im Internet, für deren URL mir die URL fehlt, und ich habe im Moment keine Zeit, online zu suchen.
Diskussionen über die IP 0.0.0.0 legen nahe, dass ein hier lauschender Dienst dies auf allen Schnittstellen tut, was ich sofort als problematisch erachte. Ich würde einen Listener lieber auf eine bestimmte Schnittstelle beschränken, z. B. localhost. Beispielsweise erscheint das Folgende an anderer Stelle auf Superuser:
Wenn ein Dienst auf 0.0.0.0 lauscht, bedeutet dies, dass der Dienst auf allen konfigurierten Netzwerkschnittstellen lauscht. Beim Lauschen auf 127.0.0.1 ist der Dienst nur an die Loopback-Schnittstelle gebunden (nur auf dem lokalen Computer verfügbar).
Die IP-Adresse 0.0.0.0 kann je nach Einsatzgebiet sehr unterschiedliche Bedeutungen haben.
Dies ist keine gültige Adresse, die einer tatsächlichen Netzwerkschnittstelle zusammen mit anderen Adressen im Subnetz 0.0.0.0/8 (also allen Adressen, die mit 0. beginnen) zugewiesen werden kann. Sie kann nicht als Quelladresse für IP-Pakete verwendet werden, es sei denn, dies geschieht, wenn ein Computer seine eigene IP-Adresse noch nicht kennt und versucht, eine zu erhalten (klassisches Beispiel: DHCP). Bei Verwendung in einer Routing-Tabelle identifiziert sie das Standard-Gateway; eine Route zu 0.0.0.0 ist die Standardroute, d. h. die Route, die verwendet wird, wenn keine spezifischere Route zu einer Zieladresse verfügbar ist. Wenn sie schließlich in der Ausgabe des Befehls netstat angezeigt wird (was Sie verlangt haben), bedeutet dies, dass ein bestimmter Socket auf allen verfügbaren IP-Adressen des Computers lauscht; wenn ein Computer mehr als eine IP-Adresse hat, kann ein Socket nur an ein bestimmtes Adress- und Portpaar oder an einen Port und alle Adressen gebunden werden; wenn Sie dort eine IP-Adresse sehen, bedeutet dies, dass der Socket nur auf diesem Port und dieser spezifischen Adresse lauscht; Wenn Sie 0.0.0.0 sehen, bedeutet dies, dass dieser Port auf allen Adressen des Computers abgehört wird, einschließlich der Loopback-Adresse (127.0.0.1).
Ähnliches wird in ominösem Unterton auf Lifewire vorgeschlagen; das Schlimmste ist die Tatsache, dass OpenVPN während der Initialisierungsphase als Root ausgeführt wird, bevor auf einen nicht privilegierten Benutzer zurückgegriffen wird, und meines Wissens nach gibt es für Debian keine Möglichkeit, dies zu verhindern.
https://www.lifewire.com/four-zero-ip-address-818384
Als Fußnote: Kann OpenVPN bei jedem beliebigen Server so eingestellt werden, dass es stattdessen auf dem lokalen Host lauscht?
Antwort1
IP-Adresse0.0.0.0
bedeutet die Standardadresse.
OpenVPN ist offenbar so eingestellt, dass der gesamte Datenverkehr über das VPN geleitet wird. Es hört also alle Anfragen des Clients ab (und beantwortet sie), um sie an das VPN weiterzuleiten.
Wenn Sie es so einstellen, dass nicht mitgehört wird 0.0.0.0
, verlieren Sie die Möglichkeit, alles standardmäßig über das VPN zu leiten.
Erklärung: OpenVPN erstellt einen virtuellen Netzwerkadapter, der für das Betriebssystem derselbe ist wie ein physischer. Während eine Verbindung mit OpenVPN besteht, verfügt Ihr Computer über zwei solcher Adapter.
Damit alle Internetanfragen über seinen Adapter geleitet werden, richtet OpenVPN seine Routing-Adresse auf ein 0.0.0.0
. Dies ist eine spezielle Metaadresse, die bedeutet: „Ich kümmere mich um alles.“
Bevor OpenVPN eine Verbindung hergestellt hat, hat sich der physische Adapter als angezeigt 0.0.0.0
, sodass es sein Treiber war, der auf ihm lauschte.
Nachdem OpenVPN eine Verbindung hergestellt hatte, entfernte es es 0.0.0.0
vom physischen Adapter und nahm es für sich, sodass der OpenVPN-Treiber jetzt darauf lauscht.
Die einzige Möglichkeit, das Abhören durch OpenVPN zu beenden, 0.0.0.0
besteht darin, die Verbindung zum VPN zu trennen. Es muss abhören, um funktionieren zu können.