Erlauben Sie dem OpenVPN-Client, seine eigenen DNS-Server zu pushen, unabhängig von den gepussten DNS des OpenVPN-Servers?

9

Auf einem Debian läuft ein OpenVPN-Server, der ein DNS in die Serverkonfigurationsdatei überträgt:

drücke "dhcp-option DNS 8.8.8.8"

Gibt es eine Option, mit der die Benutzer diese DNS-Server auf der Clientseite ändern können?

Hier ist der Haken: Der OpenVPN-Server muss ein DNS pushen, da andernfalls viele OpenVPN-Clients Webseiten erst öffnen können, wenn die DNS-Server in den Netzwerkeinstellungen des Systems manuell festgelegt wurden.

Mein Ziel ist es, automatisch einen Standard-DNS-Server auf nicht technisch versierte Benutzer anzuwenden und gleichzeitig erfahrenen Computerbenutzern die Einrichtung eigener DNS-Server zu ermöglichen.

Beachten Sie, dass das einfache Ändern der DNS-Einstellungen auf dem PC, während die Option 'push "dhcp-option DNS 8.8.8.8"' auf dem openvpn-Server aktiv ist, nichts bewirkt. Das vom Server gepusste DNS bleibt unabhängig von den lokalen DNS-Einstellungen.

Irgendwelche Ideen?

OpenVPN-Serverkonfiguration:

# cat /etc/openvpn/openvpn.conf
server 10.186.35.0 255.255.255.0
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
ifconfig-pool-persist ipp.txt
#push "route 0.0.0.0 0.0.0.0"
#push "redirect-gateway"
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
user nobody
group users
persist-key
persist-tun
status openvpn-status.log
verb 3
script-security 3
auth-user-pass-verify /etc/openvpn/auth-chap via-env
client-cert-not-required
duplicate-cn
management 127.0.0.1 5119
script-security 3 system
username-as-common-name
client-connect /etc/openvpn/scripts/clientconnect.sh
client-disconnect /etc/openvpn/scripts/clientdisconnect.sh
log-append /var/log/openvpn.log
log /var/log/openvpn.log

UPDATE: Die Client-Betriebssysteme sind Windows und Mac

Dimi
quelle
Sie haben das primäre Betriebssystem Ihrer DHCP-Clients nicht angegeben. Wir können also nur sagen: "Ja, das Überschreiben von von DHCP bereitgestellten DNS-Servern ist normalerweise ziemlich trivial." Was haben Sie erlebt, das darauf hindeutete, dass dies nicht der Fall war?
Andrew B
Entschuldigung, die Betriebssysteme sind Windows und Mac. Wenn ich mit dem openvpn-Server verbunden bin, kann ich die DNS-Einstellungen nicht effektiv ändern. Zum Beispiel liefert der openvpn-Server DNS: 8.8.8.8, und wenn ich beispielsweise in Südafrika (lokal) zu einem DNS wechsle, bleibt mein offizieller DNS-Server 8.8.8.8 (oder Googles Analog). Man kann den DNS-Server auf dnsleaktest c0m
Dimi

Antworten:

14

Ab 2017 (OpenVPN 2.4) ist dies nun möglich. Fügen Sie diese Zeile Ihrer Client-Konfigurationsdatei hinzu:

pull-filter ignore "dhcp-option DNS"

und es werden alle Push-Konfigurationszeilen ignoriert, die mit dem zitierten Text beginnen.

Die Optionen werden von oben nach unten abgeglichen, sodass die erste Übereinstimmung verwendet wird. Sie können dies verwenden, um einige Routen zuzulassen und andere abzulehnen, wenn dies Ihren Anforderungen entspricht.

Die drei Aktions Schlüsselwörter sind accept, ignoreund reject. Ich habe keinen Anwendungsfall für entdeckt reject.

Criggie
quelle
4

In der offiziellen OpenVPN-Dokumentation finden Sie:

[...]
--route-nopull
  When used with --client or --pull, accept options pushed by server EXCEPT for routes and 
  dhcp options like DNS servers.
  When used on the client, this option effectively bars the server from adding routes to the 
  client's routing table, however note that this option still allows the server to set the 
  TCP/IP properties of the client's TUN/TAP interface.
[...]

Leider hat dies zusätzlich zu Ihren Fragen den Nebeneffekt, dass auch das von Ihrer Konfiguration bereitgestellte Redirect-Gateway deaktiviert wird. Dies kann für Ihren Fall ein Problem darstellen.

Was ich vorschlage, ist ein völlig anderer Ansatz.

Wie Sie ausdrücklich erwähnt haben: " Mein Ziel ist es, automatisch einen Standard-DNS-Server auf nicht technisch versierte Benutzer anzuwenden und gleichzeitig erfahrenen Computerbenutzern die Einrichtung eigener DNS-Server zu ermöglichen. " Anscheinend wissen Sie genau, welche Benutzer Sie bereitstellen möchten eine DNS-Konfiguration und welche Benutzer Sie eine solche Konfiguration nicht bereitstellen möchten.

Daher statt Ihre Konfigurations direkt in der Haupt OpenVPN Konfigurationsdatei drücken (... und als solche stellen solche config ALL Ihre Benutzer), können Sie eine pro-Benutzerkonfiguration implementieren . Sie können dies tun mit:

--client-config-dir dir
  Specify a directory dir for custom client config files. After a connecting client 
  has been authenticated, OpenVPN will look in this directory for a file having the 
  same name as the client's X509 common name. If a matching file exists, it will be
  opened and parsed for client-specific configuration options. If no matching file is
  found, OpenVPN will instead try to open and parse a default file called "DEFAULT", 
  which may be provided but is not required. Note that the configuration files must 
  be readable by the OpenVPN process after it has dropped it's root privileges.
  This file can specify a fixed IP address for a given client using --ifconfig-push, as 
  well as fixed subnets owned by the client using --iroute.
  One of the useful properties of this option is that it allows client configuration 
  files to be conveniently created, edited, or removed while the server is live, without 
  needing to restart the server.
  The following options are legal in a client-specific context: --push, --push-reset, 
  --iroute, --ifconfig-push, and --config.

Was die Hauptkonfiguration betrifft, sollten Sie Folgendes entfernen :

  [**** to be removed from the main config***]
  push "dhcp-option DNS 8.8.8.8"
  push "dhcp-option DNS 8.8.4.4"

und fügen Sie einen Verweis auf das Verzeichnis / etc / openvpn / userconf hinzu (als Beispiel. Sie können wählen, was Sie möchten ):

 [**** to be ADDED to the main config***]
 client-config-dir /etc/openvpn/userconf

Erstellen Sie dann in einem solchen userconf-Verzeichnis eine Datei für jeden Benutzer, den Sie für ein solches DNS bereitstellen möchten, einschließlich der beiden oben gelöschten Zeilen in einer solchen Datei.

Natürlich können Sie die openvpn-Konfiguration für jeden Benutzer optimieren, ohne die Anpassung auf die beiden obigen Zeilen zu beschränken.

Als letzte Anmerkung könnte Sie auch der ccd-exklusive Parameter interessieren .

Damiano Verzulli
quelle
Vielen Dank für die Mühe, Damiano, aber ich befürchte, die richtige Antwort ist, dass der DNS-Server des TAP-Adapters geändert werden sollte, da das Ändern der IPv4-Eigenschaften der Internetverbindung in benutzerdefinierte DNS-Server nicht hilft, wenn eine Verbindung zu einem OpenVPN-Server hergestellt wird, der DNS-Server pusht. Auf diese Weise müssen Sie nichts aus den Serverkonfigurationen entfernen, sondern lediglich die IPv4-Eigenschaften der TAP-Adapter des Windows-Computers bearbeiten.
Dimi
@ Dimi: Eigentlich ist diese Lösung viel eingeschränkter, als Sie es erscheinen lassen. Da unterschiedliche VPN-Verbindungen unterschiedliche DNS-Server verwenden und die Reihenfolge des Verbindungsaufbaus bestimmt, welcher TAP-Adapter verwendet wird, kann ich die TAP-Adapter möglicherweise nicht für die Verwendung eines bestimmten DNS-Satzes vorkonfigurieren, da die von mir konfigurierten DNSs möglicherweise nicht einmal für den gelten Verbindung, die mit diesem bestimmten TAP-Adapter hergestellt wird. Kurz gesagt, Ihre Problemumgehung funktioniert nur, wenn nur eine einzige VPN-Verbindung über denselben TAP-Adapter hergestellt wird.
0xC0000022L
1

Mein Problem war nicht genau das gleiche, aber die Symptome waren ähnlich genug, damit diese Frage in den Suchergebnissen angezeigt wurde. Falls also jemand aus demselben Grund hier auftaucht:

Ich verwende Tunnelblick , eine OpenVPN-GUI für Mac OS. Mein OpenVPN-Server war nicht so eingestellt, dass er DHCP- oder DNS-Optionen überträgt, aber der Client verwendete weiterhin den DNS-Server über VPN anstelle des lokalen Nicht-VPN-DNS-Servers, den ich verwenden wollte.

Die Lösung gehen war in den Tunnel Konfigurationen → Registerkarte Einstellungen und ändert Set DNS / WINS , um nicht Set Name - Server durchführt .

Aldaviva
quelle
0

Danke für @aldaviva, es funktioniert auf meinem macOS 10.11.

Hänge meinen Screenshot an.

Geben Sie hier die Bildbeschreibung ein

Chu-Saing Lai
quelle