DNS-Lookups sind normalerweise kein Grund zur Sorge. Manchmal solltest du!
Wenn der ISP Ihres Hauses oder Büros langsame Nameserver hat oder Ihr Server viele Suchvorgänge durchführt, benötigen Sie einen lokalen DNS-Caching-Server.
Wie hilft mir ein Caching-DNS-Server?
A Cache-DNS Server funktioniert, indem er alle DNS-Abfragen durchführt, die Ihr System durchführt, und die Ergebnisse dann im Arbeitsspeicher speichert oder zwischenspeichert. Sobald die Ergebnisse im Speicher zwischengespeichert sind, wird das Ergebnis jedes Mal, wenn Sie eine doppelte Anfrage für eine Domäne stellen, fast sofort aus dem Speicher bereitgestellt.
Dies mag nicht allzu wichtig erscheinen, aber wenn sich die DNS-Server Ihres Internetdienstanbieters Zeit nehmen, um zu antworten, wird das Surfen im Internet erheblich verlangsamt. Beispielsweise muss die Homepage des US-Nachrichtensenders MSNBC über 100 eindeutige Domainnamen kontaktieren, um korrekt geladen zu werden. Wenn die Nameserver Ihres ISP sogar eine Zehntelsekunde länger als normal brauchen, um zu antworten, bedeutet dies, dass die Seite 10 Sekunden länger braucht, um den Ladevorgang abzuschließen.
Ein lokaler Caching-DNS-Server hilft nicht nur zu Hause oder im Büro, sondern auch auf Ihrem Server. Wenn Sie eine Anwendung haben, die viele DNS-Suchvorgänge durchführt, z. B. einen ausgelasteten E-Mail-Server, auf dem Anti-Spam-Software ausgeführt wird, erhält sie eine Geschwindigkeitssteigerung von einem lokalen Caching-DNS-Server.
Schließlich systemd-resolved
unterstützt die neuesten, sicheren DNS-Standards DNSSEC und DNSoverTLS bzw Punkt. Diese helfen Ihnen, sicher zu sein und Ihre Privatsphäre online zu bewahren.
Welches lokale Caching-DNS werden wir verwenden?
Der lokale Caching-DNS-Server, den wir in diesem Handbuch aktivieren und konfigurieren werden, ist systemd-aufgelöst. Dieses Tool ist Teil der systemd-Suite von Systemverwaltungstools. Wenn Ihr System systemd verwendet, und fast alle großen Linux-Distributionen, dann haben Sie systemd-resolved bereits installiert, aber nicht ausgeführt. Die meisten Distributionen verwenden systemd-resolved nicht, obwohl es vorhanden ist.
systemd-resolved
funktioniert durch Ausführen eines kleinen lokalen Caching-DNS-Servers, den wir so konfigurieren, dass er beim Booten startet. Wir werden dann den Rest des Systems neu konfigurieren, um ihre DNS-Abfragen an das vom lokalen Caching-System aufgelöste DNS weiterzuleiten.
How to check if you are already using systemd-resolved?
Einige Linux-Distributionen verwenden bereits standardmäßig systemd-aufgelöst, wie z. B. Ubuntu 19.04.
Wenn Sie bereits laufen systemd-resolved
Dann müssen Sie es nicht aktivieren oder Ihr System für die Verwendung konfigurieren. Möglicherweise müssen Sie jedoch sicherstellen, dass Netzwerkverwaltungstools wie NetworkManager korrekt konfiguriert sind, da sie die Systemnetzwerkkonfiguration ignorieren können.
Bevor Sie mit dem nächsten Abschnitt fortfahren, führen Sie den folgenden Befehl aus, um zu überprüfen, ob Sie systemd-Resolution bereits ausführen:
$ resolvectl status
Wenn Sie die Nachricht erhalten:
$ resolvectl status
Failed to get global data: Unit dbus-org.freedesktop.resolve1.service not found.
Du bist nicht Das System wird aufgelöst und sollte mit dem nächsten Abschnitt fortfahren. Wenn Sie stattdessen eine Ausgabe sehen, die mit etwa der folgenden beginnt:
Global
LLMNR setting: yes
MulticastDNS setting: yes
DNSOverTLS setting: opportunistic
DNSSEC setting: allow-downgrade
DNSSEC supported: no
Current DNS Server: 1.1.1.1
DNS Servers: 1.1.1.1
1.0.0.1
Dann führen Sie bereits systemd-Resolution aus und müssen es nicht aktivieren.
Enabling and configuring systemd-resolved
Wir müssen systemd-Resolution nicht installieren, da es bereits Teil von systemd ist. Alles, was wir tun müssen, ist, es zu starten, um den DNS-Caching-Server zum Laufen zu bringen, und es dann zu aktivieren, um es beim Booten zu starten.
Führen Sie den folgenden Befehl an einer Shell-Eingabeaufforderung als aus sudo
hat einem Nicht-Root-Benutzer ermöglicht, systemd-Resolution zu starten:
$ sudo systemctl start systemd-resolved.service
Führen Sie als Nächstes den folgenden Befehl aus, um systemd-Resolution beim Systemstart zu starten:
$ sudo systemctl enable systemd-resolved.service
Als letztes Konfigurationselement müssen die DNS-Server festgelegt werden, die von systemd aufgelöst an aufgelöste Domänen abgefragt werden. Hier gibt es viele Optionen, aber eines der folgenden Paare ist kostenlos, schnell und beide unterstützen DNSSEC und DoT:
- 8.8.8.8
- 8.8.4.4
- 1.1.1.1
- 1.0.0.1
Öffnen Sie die vom System aufgelöste Hauptkonfigurationsdatei mit Ihrem bevorzugten Texteditor. Hier habe ich nano verwendet:
$ sudo nano /etc/systemd/resolved.conf
Bearbeiten Sie die Zeile beginnt
#DNS=
Damit wird ein Paar der IP-Adressen aufgelistet. Hier werden die Cloudflare-DNS-Server angezeigt:
DNS=1.1.1.1 1.0.0.1
Speichern und beenden Sie den Texteditor. Wir müssen jetzt systemd-Resolution neu starten, damit die Nameserver verwendet werden:
$ sudo systemctl restart systemd-resolved.service
systemd-Resolution wird jetzt ausgeführt und ist bereit, DNS-Abfragen zu beschleunigen und zu sichern, sobald wir das System für die Verwendung konfigurieren.
Konfigurieren des Systems für die Verwendung von systemd aufgelöst
Ihr System kann auf verschiedene Arten für die Verwendung von systemd-aufgelöst konfiguriert werden. Wir werden uns jedoch zwei Konfigurationen ansehen, die die meisten Anwendungsfälle abdecken. Die erste ist die empfohlene Konfiguration und die zweite ist die Kompatibilitätskonfiguration. Der Unterschied zwischen den beiden ist, wie die /etc/resolv.conf
Datei wird verwaltet.
Die Datei /etc/resolv.conf enthält die IP-Adressen der Nameserver, die Programme auf dem System abfragen sollten. Programme, die DNS-Abfragen durchführen müssen, durchsuchen diese Datei, um herauszufinden, an welche Server sie sich wenden sollten, um diese Abfragen durchzuführen.
Die beiden Modi der systemd-Auflösung konzentrieren sich darauf, wie der Inhalt dieser Datei verwaltet wird. Im empfohlenen Modus wird /etc/resolv.conf zu einem Symlink zu /run/systemd/resolve/stub-resolv.conf. Diese Datei wird von systemd-aufgelöst verwaltet und daher verwaltet systemd-aufgelöst die DNS-Konfigurationsinformationen für alle anderen Programme auf dem System.
Dies kann zu Problemen führen, wenn andere Programme versuchen, den Inhalt von /etc/resolv.conf zu verwalten. Im Kompatibilitätsmodus bleibt /etc/resolv.conf aktiviert, sodass andere Programme es verwalten können, während systemd-Resolution diese DNS-Informationen verwendet. In diesem Modus müssen die anderen Programme, die /etc/resolv.conf verwalten, so konfiguriert werden, dass 127.0.0.53 als System-Nameserver in /etc/resolv.conf festgelegt wird.
Den empfohlenen Modus konfigurieren
Wenn wir diesen Modus konfigurieren systemd-resolved
Wird es schaffen /etc/resolv.conf
indem Sie es zu einem Symlink zu /run/systemd/resolve/stub-resolv.conf machen. Wir müssen dies von Hand tun, da es nicht automatisch konfiguriert wird.
Löschen oder benennen Sie zunächst die vorhandene Datei /etc/resolv.conf um. Das Umbenennen ist eine bessere Option zum Löschen, da es den gleichen Effekt hat. Sie können jedoch jederzeit auf das Original zurückgreifen, wenn Sie die darin enthaltenen Informationen benötigen. Hier benennen wir /etc/resolv.conf mit dem Befehl mv um:
$ sudo mv /etc/resolv.conf /etc/resolv.conf.original
Erstellen Sie als Nächstes den Symlink:
$ sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
Starten Sie abschließend systemd-Resolution neu:
$ sudo systemctl restart systemd-resolved.service
Kompatibilitätsmodus konfigurieren
In diesem Modus müssen Sie sicherstellen, dass der von systemd aufgelöste lokale Nameserver von den Systemdiensten abgefragt wird. Öffnen Sie /etc/resolv.conf in einem Texteditor, hier wird der Nano-Editor verwendet:
$ sudo nano /etc/resolv.conf
Löschen Sie alle Zeilen, die mit "Nameserver" beginnen, und fügen Sie diese Zeile hinzu:
nameserver 127.0.0.53
Diese Bearbeitung kann von jedem anderen Programm geändert werden, das /etc/resolv.conf verwaltet. Wenn dies der Fall ist, müssen Sie diese Programme so konfigurieren, dass dieser Nameserver verwendet wird, um die Bearbeitung dauerhaft zu machen.
Debugging systemd-resolved
Es kann schwierig sein, genau herauszufinden, wie Ihr System DNS-Abfragen durchführt, nachdem Sie diese Änderungen vorgenommen haben. Die effektivste Methode, um zu beobachten, was passiert, besteht darin, systemd-Resolution in den Debugging-Modus zu versetzen und die Protokolldatei zu überwachen.
systemd-Resolution ist ein systemd-Dienst. Dies bedeutet, dass er einfach in den Debugging-Modus versetzt werden kann, indem eine Drop-In-Dienstdatei erstellt wird, die die Debug-Einstellung enthält. Mit dem folgenden Befehl wird die richtige Datei am richtigen Speicherort erstellt:
$ sudo systemctl edit systemd-resolved.service
Fügen Sie die folgenden Zeilen in den Editor ein, speichern Sie sie und beenden Sie sie:
[Service]
Environment=SYSTEMD_LOG_LEVEL=debug
Der vom System aufgelöste Dienst wird nach erfolgreichem Speichern und Beenden automatisch neu geladen.
Öffnen Sie ein zweites Terminal für denselben Server und folgen Sie dem Journald-Protokoll für den vom System aufgelösten Dienst:
$ sudo journalctl -f -u systemd-resolved
Eine Zeile, die mit "DNS-Server verwenden" beginnt, z.
Using DNS server 1.1.1.1 for transaction 19995.
Gibt genau an, welcher DNS-Server für DNS-Abfragen verwendet wird. In diesem Fall wurde der Cloudflare-DNS-Server unter 1.1.1.1 abgefragt.
Zeilen, die als "Cache-Fehler" bezeichnet werden, zeigen an, dass der Domänenname nicht zwischengespeichert wurde. Z.B:
Cache miss for example.com IN SOA
Zeilen, die mit "Positiver Cache-Treffer" beginnen, z.
Positive cache hit for example.com IN A
Geben Sie an, dass systemd-Resolution diese Domäne zuvor abgefragt hat und die Antwort aus dem Cache im lokalen Speicher bereitgestellt wurde.
Sie sollten den Debugging-Modus deaktivieren, wenn Sie mit der Arbeit mit systemd aufgelöst fertig sind, da auf einem ausgelasteten System eine sehr große Protokolldatei erstellt wird. Sie können die Debug-Protokollierung deaktivieren, indem Sie Folgendes ausführen:
$ sudo systemctl edit systemd-resolved.service
Wenn Sie die beiden Zeilen gelöscht haben, haben Sie den Editor hinzugefügt, dann gespeichert und beendet.
Using secure DNS queries
systemd-Resolution ist einer der wenigen derzeit verfügbaren DNS-Server, die sowohl DNSSEC als auch DNSoverTLS unterstützen. Beides trägt dazu bei, dass Sie echte DNS-Informationen (DNSSEC) erhalten und niemand dies kann Snoop auf Ihrem DNS-Verkehr wie es über das Internet geht. (Punkt).
Diese Optionen können einfach aktiviert werden, indem die Hauptkonfigurationsdatei von systemd-resolve mit einem Texteditor geöffnet wird:
$ sudo nano /etc/systemd/resolved.conf
Und bearbeiten Sie die Datei so, dass die folgenden zwei Zeilen festgelegt werden:
DNSSEC=allow-downgrade
DNSOverTLS=opportunistic
Speichern und beenden Sie den Editor und laden Sie das System neu aufgelöst:
$ sudo systemctl restart systemd-resolved.service
Solange der von Ihnen eingestellte DNS-Server DNSSEC und DoT unterstützt, sind Ihre DNS-Abfragen geschützt. Die öffentlichen DNS-Server von Google und Cloudflare unterstützen beide diese Protokolle.
Conclusion
Ihr System ist jetzt so konfiguriert, dass DNS-Abfragen schnell und effizient durchgeführt werden, auch wenn der DNS-Server Ihres Internetdienstanbieters nicht so schnell reagiert, wie er sollte. Darüber hinaus ist Ihr digitales Leben sicherer, da Sie die neuesten, sicheren DNS-Protokolle zum Schutz Ihrer DNS-Abfragen verwenden.
Wenn Sie Linux-Enthusiasten sind und mehr erfahren möchten, dann sehen Sie sich das fantastisch an Online Kurs.