Wie richte ich einen lokalen DNS-Resolver mit Dnsmasq unter Ubuntu 20.04 ein?
Dnsmasq steht für „short for DNS masquerade“ und ist ein einfacher, leichter und leicht zu bedienender DNS-Forwarder, der für ein kleines Netzwerk verwendet wird. Er kann als DNS-Cache und DHCP-Server konfiguriert werden und unterstützt sowohl das IPv4- als auch das IPv6-Protokoll. Wenn er DNS-Anfragen empfängt, beantwortet er diese aus seinem Cache oder leitet sie an die verschiedenen DNS-Server weiter.
Dnsmasq besteht aus drei Subsystemen:
- DNS-Subsystem: Es wird für die Zwischenspeicherung verschiedener Datensatztypen verwendet, darunter A, AAAA, CNAME und PTR.
- DHCP-Subsystem: Es unterstützt DHCPv4, DHCPv6, BOOTP und PXE.
- Router Advertisement-Subsystem : Es bietet grundlegende Autokonfiguration für IPv6-Hosts. Es kann eigenständig oder in Verbindung mit DHCPv6 verwendet werden.
In diesem Tutorial zeigen wir Ihnen, wie Sie einen lokalen DNS-Server mit Dnsmasq auf einem Ubuntu 20.04-Server einrichten.
Voraussetzungen
- Ein Server, auf dem Ubuntu 20.04 läuft.
- Der Server ist mit einem Root-Passwort konfiguriert.
Erste Schritte
Zunächst wird empfohlen, Ihre Systempakete auf die neueste Version zu aktualisieren. Sie können alle Pakete aktualisieren, indem Sie den folgenden Befehl ausführen:
apt-get update -y
Nachdem Sie alle Pakete aktualisiert haben, müssen Sie in Ihrem System den Dienst „Systemauflösung“ deaktivieren. Der Dienst „systemresolved“ wird für die Netzwerknamensauflösung für lokale Anwendungen verwendet.
Sie können ihn deaktivieren, indem Sie den folgenden Befehl ausführen:
systemctl disable --now systemd-resolved
Sobald der Dienst deaktiviert ist, müssen Sie die Standarddatei resolv.conf entfernen und eine neue Datei mit Ihren benutzerdefinierten DNS-Serverdetails erstellen.
Sie können die Standarddatei resolv.conf mit dem folgenden Befehl entfernen:
rm -rf /etc/resolv.conf
Fügen Sie anschließend den Google DNS-Server mit folgendem Befehl zur Datei resolv.conf hinzu:
echo "nameserver 8.8.8.8" > /etc/resolv.conf
Sobald Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.
Dnsmasq installieren
Standardmäßig ist Dnsmasq im Standard-Repository von Ubuntu 20.04 verfügbar. Sie können es installieren, indem Sie einfach den folgenden Befehl ausführen:
apt-get install dnsmasq dnsutils ldnsutils -y
Sobald die Installation abgeschlossen ist, werden die Dnsmasq-Dienste automatisch gestartet. Sie können den Status von Dnsmasq mit dem folgenden Befehl überprüfen:
systemctl status dnsmasq
Sie sollten die folgende Ausgabe erhalten:
dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2020-11-02 11:02:01 UTC; 15s ago Main PID: 17726 (dnsmasq) Tasks: 1 (limit: 2282) Memory: 868.0K CGroup: /system.slice/dnsmasq.service ??17726 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,20326,8,2,e> Nov 02 11:02:12 ubuntu2004 systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server... Nov 02 11:02:12 ubuntu2004 dnsmasq[17705]: dnsmasq: syntax check OK. Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: started, version 2.80 cachesize 150 Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: DNS service limited to local subnets Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify dumpfi> Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: reading /etc/resolv.conf Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: using nameserver 8.8.8.8#53 Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: read /etc/hosts - 7 addresses Nov 02 11:02:12 ubuntu2004 systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.
Sobald Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.
Dnsmasq konfigurieren
Als nächstes müssen Sie Dnsmasq als lokalen DNS-Server konfigurieren. Sie können dies tun, indem Sie die Hauptkonfigurationsdatei von Dnsmasq bearbeiten:
nano /etc/dnsmasq.conf
Ändern Sie die folgenden Zeilen:
port=53 domain-needed bogus-priv listen-address=127.0.0.1,your-server-ip expand-hosts domain=dns-example.com cache-size=1000
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Als nächstes müssen Sie Ihre Server-IP-Adresse als primären Nameserver in Ihrer resolv.conf-Datei hinzufügen. Sie können sie mit dem folgenden Befehl hinzufügen:
nano /etc/resolv.conf
Fügen Sie die folgende Zeile über der Zeile „nameserver 8.8.8.8.8“ hinzu:
nameserver your-server-ip
Speichern und schließen Sie die Datei, wenn Sie fertig sind. Als nächstes überprüfen Sie den Server mit dem folgenden Befehl auf Konfigurationsfehler:
dnsmasq --test
Wenn alles in Ordnung ist, sollten Sie die folgende Ausgabe erhalten:
dnsmasq: syntax check OK.
Starten Sie schließlich den Dnsmasq-Dienst neu, um die Änderungen zu übernehmen:
systemctl restart dnsmasq
An diesem Punkt wird Dnsmasq gestartet und lauscht auf Port 53. Sie können dies mit dem folgenden Befehl überprüfen:
ss -alnp | grep -i :53
Sie sollten die folgende Ausgabe erhalten:
udp UNCONN 0 0 0.0.0.0:53 0.0.0.0:* users:(("dnsmasq",pid=41051,fd=4)) udp UNCONN 0 0 [::]:53 [::]:* users:(("dnsmasq",pid=41051,fd=6)) tcp LISTEN 0 32 0.0.0.0:53 0.0.0.0:* users:(("dnsmasq",pid=41051,fd=5)) tcp LISTEN 0 32 [::]:53 [::]:* users:(("dnsmasq",pid=41051,fd=7))
DNS-Einträge zum Dnsmasq-Server hinzufügen
Als nächstes müssen Sie Ihre Datei /etc/hosts bearbeiten und den Eintrag für den lokalen DNS-Server hinzufügen.
nano /etc/hosts
Fügen Sie die folgende Zeile hinzu:
your-server-ip host1.dns-example.com
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Dnsmasq Server-Auflösung verifizieren
An diesem Punkt wird Dnsmasq installiert und konfiguriert. Nein, es ist an der Zeit, die DNS-Auflösung zu überprüfen.
Sie können den Befehl dig verwenden, um die DNS-Auflösung wie unten dargestellt zu überprüfen:
dig host1.dns-example.com +short
Wenn alles in Ordnung ist, sollten Sie Ihre Server-IP in der folgenden Ausgabe sehen:
your-server-ip
Sie können auch die externe DNS-Auflösung mit dem folgenden Befehl überprüfen:
dig howtoforge.com +short
Sie sollten die folgende Ausgabe erhalten:
172.67.68.93 104.26.3.165 104.26.2.165
Konfigurieren Sie den Remote-Client für die Verwendung des DNS-Servers Dnsmasq
Als nÃ?chstes mÃ?ssen Sie einen Remote-Client so konfigurieren, dass Ihr Dnsmasq-DNS-Server als Standard-DNS-Server verwendet wird.
Installieren Sie zunächst DNS-Tools mit dem folgenden Befehl:
apt-get install dnsutils ldnsutils -y
Nach der Installation müssen Sie die Datei /etc/resolv.conf und den Eintrag Ihres Dnsmasq-DNS-Servers bearbeiten.
nano /etc/resolv.conf
Fügen Sie die folgende Zeile am Anfang der Datei hinzu:
nameserver your-server-ip
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Überprüfen Sie dann die lokale DNS-Auflösung mit dem folgenden Befehl:
dig host1.dns-example.com
Sie sollten die folgende Ausgabe sehen:
; DiG 9.9.5-3ubuntu0.4-Ubuntu host1.dns-example.com ;; global options: +cmd ;; Got answer: ;; HEADER opcode: QUERY, status: NOERROR, id: 26401 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;host1.dns-example.com. IN A ;; ANSWER SECTION: host1.dns-example.com. 0 IN A 45.58.32.165 ;; Query time: 301 msec ;; SERVER: 45.58.32.165#53(45.58.32.165) ;; WHEN: Mon Nov 02 16:49:37 IST 2020 ;; MSG SIZE rcvd: 66
Als nächstes müssen Sie Ihren DNS-Server für die Zwischenspeicherung überprüfen. Sie können dies mit dem Bohrprogramm überprüfen.
Führen Sie zunächst den folgenden Befehl aus:
drill google.com | grep "Query time"
Sie sollten die folgende Ausgabe sehen: Als nächstes sollten Sie die folgende Ausgabe sehen:
;; Query time: 290 msec
Führen Sie als Nächstes den Befehl erneut aus, um zu überprüfen, ob das Caching funktioniert oder nicht:
drill google.com | grep "Query time"
Sie sollten sehen, dass die Abfragezeit jetzt auf 4 msec sinkt:
;; Query time: 4 msec
Schlussfolgerung
Herzlichen Glückwunsch! Sie haben Dnsmasq erfolgreich als lokalen DNS-Server und Ubuntu 20.04 installiert und konfiguriert. Ich hoffe, Sie können es nun einfach in Ihrem lokalen Netzwerk zur Namensauflösung implementieren.