Ich versuche, dnsmasq einzurichten, damit ich benutzerdefinierte Hostnamen über einen OpenVPN-Server erstellen kann. Wenn sich also ein Computer verbindet, verweisen die Hostnamen auf Ressourcen, die sich auf dem OpenVPN-Host oder -Netzwerk befinden.
So sieht beispielsweise die Datei /etc/hosts auf dem Server wie folgt aus:
db.private.resource 10.8.0.1
app.private.resource 10.8.0.1
Den Client dazu zu bringen, den Tunnel für die DNS-Suche zu verwenden, ist ziemlich unkompliziert. In der Datei server.conf habe ich:
push "dhcp-option DNS 10.8.0.1"
Und in der Clientkonfiguration habe ich:
dhcp-option DNS 10.8.0.1
Und ich kann überprüfen, dass der Client bei der Verbindung OpenVPN als DNS verwendet, indem ich Folgendes ausführe:
# dnsmasq --no-daemon -q
Führen Sie in der Befehlszeile einen Ping vom Client aus durch, um zu überprüfen, ob der Client tatsächlich DNS-Lookup-Anfragen über den Tunnel an den OpenVPN-Server sendet und ob der OpenVPN-Server die Anfragen tatsächlich verarbeitet.
Das Problem besteht darin, dass ich Folgendes erhalte, wenn ich versuche, den db.private.resource
von mir definierten Host anzupingen:
dnsmasq: query[A] db.private.resource from 10.8.0.2
dnsmasq: config db.private.resource is NXDOMAIN
Aus der Ausgabe von dnsmasq. Aus irgendeinem Grund scheint es also nicht die Werte zurückzugeben, die ich in /etc/hosts definiert habe. Und was mich erstaunt, ist, dass ich selbst dann das obige Ergebnis erhalte, wenn ich dnsmasq mit einem hinzugefügten Adressparameter ausführe.
# dnsmasq --no-daemon -q --address=/db.private.resource/10.8.0.1/
dnsmasq: query[A] db.private.resource from 10.8.0.2
dnsmasq: config db.private.resource is NXDOMAIN
Sieht an diesem Ergebnis irgendetwas falsch aus?
Antwort1
Installieren Sie zuerst dnsmasq:
sudo apt-get update; sudo apt-get install dnsmasq
.
Server
Fügen Sie auf dem Server diese Zeile hinzu /etc/dnsmasq.conf
:
...
expand-hosts #Uses /etc/hosts on this machine for resolution
bind-interfaces #will bind on all available interfaces, including the openvpn one
listen-address=10.8.0.1 # i noticed recently that i also need to add this line, because by default it will only listen on 10.9.0.1 which isnt pushed to my clients
...
Bearbeiten Sie dann die /etc/hosts
Datei mit Ihren Hostnamen. Führen Sie abschließend aus sudo /etc/init.d/dnsmasq restart
.
Wenn Sie aus irgendeinem Grund keine Änderungen vornehmen möchten /etc/hosts
, können Sie unter eine neue Datei erstellen /etc/dnsmasq.conf.d/addresses.conf
und diese mit Ihren Adressen füllen:
address=/umomma.com/69.69.69.69
address=/oo.umomma.com/69.69.69.60
address=/ooooo.umomma.com/69.69.69.62
address=/ooooooooo.umomma.com/69.69.69.65
Auch bei dieser zweiten Methode möchten Sie hinterherlaufen sudo /etc/init.d/dnsmasq restart
.
Klient
10.8.0.1
OpenVPN-Server weisen sich die IP-Adressen oder normalerweise selbst zu 10.9.0.1
. Daher sollten wir auf dem Client sicherstellen, dass wir diese Nameserver zuerst abfragen.
Zumindest habe ich vorerst auf dem Client Änderungen vorgenommen und der ersten Zeile der Datei /etc/resolv.conf
vorangestellt . Auf dem Client sieht meine vollständige resolve.conf also folgendermaßen aus:nameserver 10.8.0.1
nameserver 10.8.0.1
nameserver 8.8.8.8
nameserver 8.8.8.8
nameserver 127.0.1.1
Um diese Änderungen beim Neustart dauerhaft zu machen, nehmen Sie die gleiche Änderung bei vor /etc/resolvconf/resolv.conf.d/head
.
Auch
Denken Sie daran, es auszuführen, sudo /etc/init.d/dnsmasq restart
wenn Sie Hosts auf dem Server hinzufügen