Dnsmasq steht für "kurz für DNS-Masquerade" und ist ein einfacher, leichtgewichtiger und benutzerfreundlicher DNS-Forwarder, der für ein kleines Netzwerk verwendet wird. Es kann als DNS-Cache und DHCP-Server konfiguriert werden und unterstützt sowohl das IPv4- als auch das IPv6-Protokoll. Wenn es DNS-Anfragen erhält, beantwortet es sie aus seinem Cache oder leitet sie an den anderen DNS-Server weiter.
Dnsmasq besteht aus drei Subsystemen:
- DNS-Subsystem : Es wird zum Zwischenspeichern verschiedener Datensatztypen verwendet, einschließlich A, AAAA, CNAME und PTR.
- DHCP-Subsystem : Es unterstützt DHCPv4, DHCPv6, BOOTP und PXE
- Router Advertisement Subsystem : Es bietet eine 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 mit Ubuntu 20.04.
- Ein Root-Passwort wird auf dem Server 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 den von Systemd aufgelösten Dienst in Ihrem System deaktivieren. Der vom System aufgelöste Dienst wird für die Netzwerknamensauflösung für lokale Anwendungen verwendet.
Sie können es 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 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 als Nächstes den Google-DNS-Server mit dem folgenden Befehl zur Datei „resolv.conf“ hinzu:
echo "nameserver 8.8.8.8" > /etc/resolv.conf
Wenn 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 es mit dem folgenden Befehl hinzufügen:
nano /etc/resolv.conf
Fügen Sie über der Zeile „nameserver 8.8.8.8“ die folgende Zeile hinzu:
nameserver your-server-ip
Speichern und schließen Sie die Datei, wenn Sie fertig sind. Überprüfen Sie als Nächstes 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 abschließend den Dnsmasq-Dienst neu, um die Änderungen zu übernehmen:
systemctl restart dnsmasq
An diesem Punkt wird Dnsmasq gestartet und überwacht 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 /etc/hosts-Datei bearbeiten und den Eintrag des lokalen DNS-Servers 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-Serverauflösung überprüfen
An diesem Punkt ist 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 gezeigt 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 die externe DNS-Auflösung auch 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 von Dnsmasq
Als Nächstes müssen Sie einen Remote-Client konfigurieren, um Ihren Dnsmasq-DNS-Server als Standard-DNS-Server zu verwenden.
Installieren Sie zuerst die DNS-Tools mit dem folgenden Befehl:
apt-get install dnsutils ldnsutils -y
Nach der Installation müssen Sie die Datei /etc/resolv.conf und Ihren Dnsmasq-DNS-Servereintrag bearbeiten.
nano /etc/resolv.conf
Fügen Sie am Anfang der Datei die folgende Zeile hinzu:
nameserver your-server-ip
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Überprüfen Sie als Nächstes 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 das Caching verifizieren. Sie können dies mit dem Drill-Dienstprogramm überprüfen.
Führen Sie zuerst den folgenden Befehl aus:
drill google.com | grep "Query time"
Sie sollten 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 ms abnimmt:
;; Query time: 4 msec
Schlussfolgerung
Herzliche Glückwünsche! Sie haben erfolgreich Dnsmasq als lokalen DNS-Server und Ubuntu 20.04 installiert und konfiguriert. Ich hoffe, Sie können es jetzt problemlos in Ihrem lokalen Netzwerk zur Namensauflösung implementieren.