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.

Das könnte dich auch interessieren …