Wenn man den Wunsch hat, den gesamten Datenverkehr vom eigenen Computer ins Internet durch ein VPN zu schicken, wird man DNS Leaks oder IPv6 Leaks als Probleme ansehen. Bei DNS Leaks oder IPv6 Leks handelt es sich nicht um Bugs (im Sinne einer Fehlfunktion des VPN) sondern um Features im Traffic Routing, die man durch geeigente Konfiguration vermeiden kann.
Um das Problem zu verstehen, wird das Routing im Innern des PC bei aktiviertem VPN an einem Beispiel erläutert. Ein PC oder Laptop wird zuhause (oder im Hotel) mit dem WLAN verbunden. Der Router ist eine Fritz!Box (andere Router funktionieren ähnlich) und ein OpenVPN wird aktiviert.
Beim Herstellen der WLAN-Verbindung wird das Netzwerkinterface "wlan0" konfiguriert.
Via DHCP wird dem Interface "wlan0" eine IPv4 Adresse 192.168.178.x/24 zugewiesen.
Der Netzbereich /24 hinter der IP-Adresse besagt, dass die Adressen 192.168.178.1…255 (andere PCs im LAN) direkt von dieser Schnittstelle erreichbar sind ohne Routing.
Dabei kann es sich um die Adressen in einem Firmennetz handeln (z.B. 10.1.0.0/16). Als Road Warrior oder im Homeoffice könnte man so einerseits via VPN mit den Servern in der Firma arbeiten und gleichzeitig ganz normal ohne VPN im Internet surfen.
Wenn eine Internetanwendung (Browser, E-Mail Client, Daemon) einen Server mit einer IP aus dem Netzbereich des lokalen Netzes (IPs 192.168.178.1…255) kontaktiert, dann geht der Traffic sofort zur WLAN Schnittstelle, da direkte Verbindungsmöglichkeiten bevorzugt werden.
Als allgemeine Routing Regel gilt: es wird immer die "most specific rule" verwendet.
Das ist praktisch, weil so die Dienste im heimischen LAN trotz VPN erreichbar bleiben.
Bevor der Browser einen Server kontaktieren kann, muss er einen DNS-Server nach der IP-Adresse fragen. In der Beispielkonfiguration sind zwei DNS-Server bekannt. Die Fritz!Box hat sich bei der Einrichtung der WLAN Schnittstelle als DNS-Server konfiguriert und leitet Anfragen an den Provider weiter. Außerdem wurde für das VPN ein weiterer DNS-Server eingerichtet.
DNS Anfragen werden an alle bekannten DNS-Server gesendet und die Fritz!Box anwortet zuerst, da sie direkt im lokalen Netz erreichbar ist (siehe 1.) und nicht durch Verschlüsselung gebremst wird. Daraus ergibt sich, dass der DNS Verkehr nicht über das VPN läuft. Nur wenn die Fritz!Box keine Antwort weiß, hat der DNS-Server des VPN-Providers eine Chance.
Wenn man DNS-Server im lokalen Netz immer sperren würde, dann könnte Namen von Diensten im lokalen Netz wie http://www.fritz.box nicht aufgelösen und WiFi-Hotspots Login Seiten würden nicht funktionieren. Die Konf. muss also dynamisch angepasst werden.
Wenn eine Internetanwendung einen Server mit einer IPv6 Adresse kontaktieren möchte, dann geht der Traffic immer am VPN vorbei direkt über WLAN Schnittstelle und die Fritz!Box ins Internet, weil nur das Interface "wlan0" eine IPv6 Adresse hat und VPNs IPv6 ignorieren.
Moderne Internetanwendungen bevorzugen IPv6. Sie fragen den DNS-Server zuerst nach einem AAAA-Record (IPv6 Adresse) und erst bei negativen Ergebnis nach einem A-Record (IPv4 Adresse). Wenn der gewünschte Server also via IPv6 erreichabr ist, läuft weder der DNS Datenverkehr über das aktive VPN (siehe 2.) noch der Nutztraffic zum Server.