DNSmasq ist ein nützliches Werkzeug, um DNS-Anfragen auf Linux-Systemen zwischenzuspeichern. Die Implementierung kann jedoch anfänglich einige Herausforderungen mit sich bringen.
Der DNS-Cache beschleunigt den DNS-Lookup-Prozess, welcher den Domainnamen einer Website in die zugehörige IP-Adresse umwandelt. Wenn mehrere Benutzer in Ihrem Netzwerk dieselbe Website besuchen, kann ein lokaler DNS-Cache-Server die Ladezeiten erheblich reduzieren.
Zunächst wollen wir uns ansehen, was DNS-Caching eigentlich bedeutet.
Was bedeutet DNS-Caching?
Das DNS (Domain Name System) wird im Internet verwendet, um alle öffentlich zugänglichen Online-Seiten und ihre entsprechenden IP-Adressen zu verwalten. Man kann es sich wie ein Telefonbuch vorstellen. DNS ermöglicht es uns, uns nicht die IP-Adressen jeder Webseite merken zu müssen, was für die Interaktion der Netzwerkinfrastruktur mit Internetseiten unerlässlich ist.
Wenn Sie eine Suchmaschine auffordern, eine Webseite anzuzeigen, geschieht im Hintergrund eine Menge.
Obwohl Ihr System Zugriff auf viele externe DNS-Server hat, ist die Nutzung eines lokalen DNS-Caches zur Beschleunigung der Übertragung und Auflösung von Vorteil. Hier kommt DNS-Caching ins Spiel.
Bevor eine Anfrage an das Web gesendet wird, übernimmt der DNS-Cache die Auflösung von Domänen, auf die kürzlich und häufig zugegriffen wurde, was den Prozess erheblich beschleunigt.
Auf einen DNS-Server wird jedes Mal zugegriffen, wenn eine IP-Adresse in einen Domainnamen umgewandelt werden muss. Dies kann den DNS-Server zusätzlich belasten, besonders wenn eine Webseite viele gleichzeitige Anfragen erhält.
Ein DNS-Cache dient dazu, DNS-Anfragen und Antwortzeiten zu verkürzen. Die aufgelösten IP-Adressen werden lokal zusammen mit Host-Details gespeichert. Anstatt eine neue DNS-Abfrage zu initiieren, wird das Ergebnis aus dem DNS-Cache abgerufen, wenn die IP oder der Domainname erneut aufgelöst werden soll.
Wie hilft DNS-Caching bei der Behebung von zeitweiligen DNS-Auflösungsproblemen auf Amazon EC2-Instances?
Die meisten Linux-Systeme nutzen standardmäßig keinen lokalen DNS-Cache. Das bedeutet, dass alle DNS-Anfragen direkt an den von Amazon bereitgestellten DNS-Resolver gesendet werden, der eine Begrenzung der Anzahl gleichzeitig zu verarbeitender Anfragen hat. DNS-Auflösungsprobleme können auftreten, wenn es zu einem Ansturm von Anfragen kommt.
Ein lokaler DNS-Cache auf dem System hilft Ihnen, die CPU- und Netzwerkauslastung zu reduzieren und gleichzeitig DNS-Auflösungsfehler zu vermeiden. Ein solcher Cache kann Anfragen an externe DNS-Ressourcen wie Amazon RDS und S3 beantworten.
Das DHCP-Protokoll wird beim Start von Amazon EC2-Instances verwendet, die mit Amazon VPCs verbunden sind, um eine DNS-Serveradresse anzufordern.
Wenn Sie Amazon VPC zur Erstellung einer Virtual Private Cloud verwenden, nutzt der Route 53 DNS-Resolver einen Resolver innerhalb der VPC, um auf DNS-Anfragen für EC2-Instances zu reagieren, die unter lokalen Amazon VPC-Webadressen und Einträgen in privat verwalteten Zonen laufen. Der Resolver führt rekursive Suchvorgänge auf öffentlichen DNS-Servern für alle zusätzlichen Webadressen durch.
Ein DNS-Cache dient als temporäre Aufzeichnung von vorherigen DNS-Abfragen, die von Ihrem System schnell eingesehen werden kann, während es versucht, auf eine Online-Seite zuzugreifen. Er führt ein Protokoll jeder aktuellen und nachfolgenden Sitzung. Dieser DNS-Cache erleichtert die Domänenauflösung und beugt Fehlern bei Amazon EC2-Linux-Instanzen vor.
Viele Nutzer verwenden in der Regel den Route 53-Dienst von Amazon für DNS, wenn sie auf AWS zugreifen. Er ist sehr einfach zu bedienen und fast kostenlos. Es gibt jedoch einige Gründe, die die Entscheidung eines Benutzers für einen lokalen DNS-Server beeinflussen könnten.
Obwohl bind9 immer noch eine gute Option ist, um einen lokalen DNS-Cache-Server einzurichten, ist dnsmasq viel einfacher zu installieren und zu konfigurieren, sowohl auf EC2-Instanzen als auch auf einem lokalen Computer.
Was ist dnsmasq?
DNSmasq ist ein Linux-basiertes Tool, das DNS-, DHCP-, TFTP- und DNS-Caching-Funktionen bietet. Es ist kompakt, leicht und daher ideal für Netzwerke und Firewalls mit geringen Ressourcen.
Es ist extrem einfach zu installieren und zu konfigurieren. Für die Einrichtung von DNS und DHCP in Subnetzen ist dnsmasq eine flexible und praktische Lösung.
Es ist möglich, DHCP-zugewiesene Kennungen und zugehörige Anweisungen für jeden Server oder für einen zentralen Controller einzurichten. Dynamische und statische DHCP-Optionen werden von dnsmasq unterstützt. Es ist portabel und kann DNS und DHCP für mindestens 1.000 Clients verwalten.
Wenn eine DNS-Anfrage eingeht, antwortet dnsmasq entweder aus einem lokalen Cache oder leitet sie an einen autoritativen DNS-Server weiter. Zusätzlich zur Beantwortung von DNS-Anfragen für Adressen mit DHCP-Konfiguration prüft es den Inhalt der Datei /etc/hosts, um lokale Hostnamen zu identifizieren, die nicht im öffentlichen DNS aufgeführt sind.
Die Verwendung des dnsmasq-Tools anstelle des integrierten DNS-Caches des Browsers verbessert die Leistung beim Surfen im Internet erheblich. Es ist ideal für eine integrierte Umgebung mit begrenzten Ressourcen, da es sehr einfach einzurichten ist und sehr wenig Speicherplatz benötigt.
Eigenschaften von dnsmasq
- Interne DNS-Server lassen sich problemlos mit dnsmasq integrieren, indem man es so konfiguriert, dass bestimmte Abfragen zur Auflösung von Domänennamen an bestimmte autoritative Server weitergeleitet werden.
- Der konfigurierte lokale DNS-Server reduziert die Arbeitslast des Servers und erhöht die Zuverlässigkeit.
- Die DNS-Konfiguration für Firewalls ist recht einfach und unabhängig vom DNS des Internetanbieters.
- Wenn der mit dem Internet verbundene Port nicht erreichbar ist, während eine DNS-Prüfung auf dem Rechner durchgeführt wird, wird die Suche sofort ausgesetzt.
- Durch PPP- (Point-to-Point-Protokoll) oder DHCP-Abfragen kann dnsmasq so konfiguriert werden, dass es Daten regelmäßig direkt vom zugrunde liegenden Domänenauflösungsserver bezieht.
Installation
Der systemd-resolved Dienst muss vor der Installation und Konfiguration von dnsmasq deaktiviert werden.
systemctl stop systemd-resolved
Sie können ihn auch maskieren, damit er beim Neustart nicht automatisch gestartet wird.
systemctl mask systemd-resolved
Die Installation von dnsmasq ist die erste Handlung, die Sie nach dem Deaktivieren von systemd-resolved durchführen sollten. Dnsmasq ist in fast allen Linux-Distributionen vorinstalliert. Falls nicht, können Sie es manuell installieren. Öffnen Sie ein Befehlsterminal und geben Sie folgenden Befehl ein:
sudo apt-get install dnsmasq
Wenn Sie ein Yum-Nutzer sind, verwenden Sie den folgenden Befehl:
sudo yum install -y dnsmasq
Dieser Befehl installiert das Tool automatisch und startet dnsmasq im Hintergrund.
Nach erfolgreicher Installation können Sie den Status von dnsmasq mit dem folgenden Befehl überprüfen:
systemctl status dnsmasq
Wenn der Status als „active (running)“ angezeigt wird, ist die Installation abgeschlossen und der Dienst auf Port 53 konfiguriert. Wird „inactive (dead)“ angezeigt, müssen Sie sowohl die Ubuntu-Maschine als auch dnsmasq neu starten, um das Problem zu beheben.
Konfiguration
Dnsmasq kann jetzt auf Ihrem Computer als lokaler Caching-DNS-Server eingerichtet werden. Die Standardkonfigurationsdatei finden Sie unter /etc/dnsmasq.conf. Diese Konfigurationsdatei muss zur Einrichtung von dnsmasq im System bearbeitet werden.
Verwenden Sie diesen Befehl, um die Konfigurationsdatei zu öffnen und zu bearbeiten:
nano /etc/dnsmasq.conf
Die Konfigurationsdatei darf nur mit Root-Rechten bearbeitet werden. Löschen Sie einfach den gesamten Inhalt der Datei, einschließlich der Kommentare, kopieren Sie die untenstehenden Konfigurationseinstellungen und speichern Sie die Datei:
port=53 domain-needed bogus-priv listen-address=127.0.0.1 expand-hosts domain=geek-demo.com cache-size=1000
Hier eine kurze Beschreibung der einzelnen Parameter:
- Port – Hiermit wird der Port angegeben oder gebunden, den dnsmasq für den Empfang von DNS-Anfragen nutzt.
- domain-needed – Überträgt nur Domainnamen an den Upstream-DNS-Server.
- bogus-priv – Verhindert Domain- und Port-Weiterleitung.
- listen-address – Definiert die Nameserver-Adresse. Typischerweise wird localhost als Standard verwendet, um einen lokalen DNS-Server einzurichten.
- domain – Konfiguriert die Domänen, an die dnsmasq kurze Bezeichner anhängt.
- cache-size – Definiert die maximale Größe des DNS-Caches im Speicher.
Speichern und schließen Sie die Konfigurationsdatei, nachdem Sie die erforderlichen Änderungen vorgenommen haben. Als Nächstes bearbeiten Sie die Datei /etc/resolv.conf, um die lokale Hostauflösungsadresse hinzuzufügen. Verwenden Sie folgenden Befehl, um die Datei mit dem Nano-Editor zu öffnen:
nano /etc/resolv.conf
Hier finden Sie alle Nameserver, die Ihr System zur Adressauflösung verwendet. Fügen Sie in dieser Liste auch die Loopback-Adresse hinzu. Fügen Sie „nameserver 127.0.0.1“ in die erste Zeile ein.
Speichern und schließen Sie die Konfigurationsdatei. Starten Sie dnsmasq neu, damit die aktualisierten Einstellungen wirksam werden.
systemctl restart dnsmasq
Testen des lokalen DNS-Caching-Servers
Es ist einfach, den lokalen DNS-Server zu testen. Öffnen Sie eine Befehlszeile und verwenden Sie den Befehl „dig“, um den DNS-Cache zu prüfen. Wenn Sie den Befehl zum ersten Mal verwenden, sollte das Ergebnis eine gewisse Abfragezeit aufweisen.
┌──(root💀kali)-[/home/writer] └─# dig wdzwdz.com 1 ⚙ ; <<>> DiG 9.18.0-2-Debian <<>> wdzwdz.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 623 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;wdzwdz.com. IN A ;; ANSWER SECTION: wdzwdz.com. 227 IN A 172.66.43.163 wdzwdz.com. 227 IN A 172.66.40.93 ;; Query time: 31 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP) ;; WHEN: Sat Oct 15 07:52:49 EDT 2022 ;; MSG SIZE rcvd: 74
Hier sehen Sie, dass die Abfragezeit ca. 31 ms beträgt, um die Details vom Upstream-Nameserver abzurufen. Führen Sie denselben dig-Befehl erneut aus, und Sie werden eine deutliche Verkürzung der Abfragezeit feststellen.
┌──(root💀kali)-[/home/writer] └─# dig wdzwdz.com 1 ⚙ ; <<>> DiG 9.18.0-2-Debian <<>> wdzwdz.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21942 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;wdzwdz.com. IN A ;; ANSWER SECTION: wdzwdz.com. 281 IN A 172.66.40.93 wdzwdz.com. 281 IN A 172.66.43.163 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP) ;; WHEN: Sat Oct 15 07:58:10 EDT 2022 ;; MSG SIZE rcvd: 74
Die Abfragezeit beträgt hier 0 ms. Dies liegt daran, dass dnsmasq nach der ersten Suche die Daten gespeichert hat und alle nachfolgenden Suchen durch die Nutzung des gespeicherten Caches sofort erfolgen. Ein Neustart von dnsmasq ist erforderlich, wenn Sie den gespeicherten DNS-Cache löschen möchten.
Zusammenfassung
In diesem Artikel haben wir gesehen, wie man dnsmasq einrichtet und konfiguriert, um es als lokalen DNS-Server zu verwenden. Sie könnten auch erfahren wollen, wie man DNS-Server für schnelleres Surfen in verschiedenen Betriebssystemen ändert.