Unbound ist ein kostenloser, quelloffener, rekursiver und validierender DNS-Caching-Server. Es verwendet DNS-over-TLS und DNS-over-HTTPS, um Verbindungen zwischen Clients zu verschlüsseln. Im Vergleich zu Bind9 ist Unbound leicht und extrem schnell. Ein Caching-Server hilft Ihnen, die Ladezeit der Website zu verkürzen, indem die Cache-Datenbank auf einem Unbound-Server gehalten wird. Es ist auch zur DNSSEC-Validierung fähig und kann als Vertrauensanker dienen.
In diesem Beitrag zeigen wir Ihnen, wie Sie den Unbound DNS Resolver unter Ubuntu 20.04 einrichten.
Voraussetzungen
- Ein frischer Ubuntu 20.04-Server auf der Atlantic.Net Cloud Platform
- Ein auf Ihrem Server konfiguriertes Root-Passwort
Schritt 1 – Atlantic.Net Cloud-Server erstellen
Melden Sie sich zunächst bei Ihrem Atlantic.Net Cloud Server an. Erstellen Sie einen neuen Server und wählen Sie Ubuntu 20.04 als Betriebssystem mit mindestens 2 GB RAM. Stellen Sie über SSH eine Verbindung zu Ihrem Cloud-Server her und melden Sie sich mit den oben auf der Seite hervorgehobenen Anmeldeinformationen an.
Sobald Sie sich bei Ihrem Ubuntu 20.04-Server angemeldet haben, führen Sie den folgenden Befehl aus, um Ihr Basissystem mit den neuesten verfügbaren Paketen zu aktualisieren.
apt-get update -y
Schritt 2 – Erforderliche Abhängigkeiten installieren
Bevor Sie beginnen, müssen Sie einige grundlegende DNS-Tools in Ihrem System installieren. Sie können alle mit dem folgenden Befehl installieren:
apt-get install bind9-utils dnsutils net-tools -y
Sobald alle Pakete installiert sind, können Sie mit dem nächsten Schritt fortfahren.
Schritt 3 – Ungebundenes DNS installieren und konfigurieren
apt-get install unbound -y
Nach der Installation von Unbound DNS müssen Sie es konfigurieren. Standardmäßig befindet sich die Unbound-Hauptkonfigurationsdatei unter /etc/unbound/unbound.conf. Es wird jedoch empfohlen, eine separate Konfigurationsdatei zu erstellen:
nano /etc/unbound/unbound.conf.d/myunbound.conf
Fügen Sie die folgenden Zeilen hinzu:
server: port: 53 verbosity: 0 num-threads: 2 outgoing-range: 512 num-queries-per-thread: 1024 msg-cache-size: 32m interface: 0.0.0.0 rrset-cache-size: 64m cache-max-ttl: 86400 infra-host-ttl: 60 infra-lame-ttl: 120 access-control: 127.0.0.0/8 allow access-control: 0.0.0.0/0 allow username: unbound directory: "/etc/unbound" logfile: "/var/log/unbound.log" use-syslog: no hide-version: yes so-rcvbuf: 4m so-sndbuf: 4m do-ip4: yes do-ip6: no do-udp: yes do-tcp: yes remote-control: control-enable: yes control-port: 953 control-interface: 0.0.0.0
Speichern und schließen Sie die Datei und validieren Sie dann die Konfigurationsdatei mit dem folgenden Befehl:
unbound-checkconf /etc/unbound/unbound.conf.d/myunbound.conf
Sie sollten die folgende Ausgabe erhalten:
unbound-checkconf: no errors in /etc/unbound/unbound.conf.d/myunbound.conf
Erstellen Sie als Nächstes eine Protokolldatei für Unbound und legen Sie die richtigen Berechtigungen fest:
touch /var/log/unbound.log chown unbound:unbound /var/log/unbound.log
Schritt 4 – Starten Sie den ungebundenen DNS-Dienst
An diesem Punkt ist Unbound DNS installiert und konfiguriert. Starten Sie jetzt den ungebundenen Dienst neu und aktivieren Sie ihn, um beim Systemneustart zu starten:
systemctl restart unbound systemctl enable unbound
Sie können den Status von Unbound auch mit dem folgenden Befehl überprüfen:
systemctl status unbound
Beispielausgabe:
● unbound.service - Unbound DNS server Loaded: loaded (/lib/systemd/system/unbound.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2021-08-15 06:30:33 UTC; 7s ago Docs: man:unbound(8) Process: 2788 ExecStartPre=/usr/lib/unbound/package-helper chroot_setup (code=exited, status=0/SUCCESS) Process: 2791 ExecStartPre=/usr/lib/unbound/package-helper root_trust_anchor_update (code=exited, status=0/SUCCESS) Main PID: 2804 (unbound) Tasks: 2 (limit: 2353) Memory: 4.8M CGroup: /system.slice/unbound.service └─2804 /usr/sbin/unbound -d Aug 15 06:30:32 ubuntu2004 systemd[1]: Starting Unbound DNS server... Aug 15 06:30:33 ubuntu2004 package-helper[2796]: /var/lib/unbound/root.key has content Aug 15 06:30:33 ubuntu2004 package-helper[2796]: success: the anchor is ok Aug 15 06:30:33 ubuntu2004 systemd[1]: Started Unbound DNS server.
An diesem Punkt wird der Unbound-Dienst gestartet und überwacht Port 53. Sie können dies mit dem folgenden Befehl überprüfen:
ss -antpl | grep 53
Beispielausgabe:
LISTEN 0 256 0.0.0.0:53 0.0.0.0:* users:(("unbound",pid=3407,fd=6)) LISTEN 0 256 0.0.0.0:53 0.0.0.0:* users:(("unbound",pid=3407,fd=4)) LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=356,fd=13)) LISTEN 0 256 0.0.0.0:953 0.0.0.0:* users:(("unbound",pid=3407,fd=7))
Schritt 5 – Ungebundenes DNS testen
Jetzt müssen Sie den Befehl dig verwenden und einige DNS-Abfragen durchführen, um den ungebundenen DNS-Server zu testen.
Wir werden ubuntu.com zum Testen verwenden.
dig ubuntu.com @localhost
Beispielausgabe:
; <<>> DiG 9.16.1-Ubuntu <<>> ubuntu.com @localhost ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6037 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;ubuntu.com. IN A ;; ANSWER SECTION: ubuntu.com. 60 IN A 91.189.88.181 ubuntu.com. 60 IN A 91.189.88.180 ;; Query time: 307 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sun Aug 15 06:32:18 UTC 2021 ;; MSG SIZE rcvd: 71
Wie Sie sehen, beträgt die Abfragezeit 307 msec in der ersten Abfrage. Ihre Abfrage ist jetzt zwischengespeichert.
Als Nächstes führen wir dieselbe Abfrage erneut aus:
dig ubuntu.com @localhost
Beispielausgabe:
; <<>> DiG 9.16.1-Ubuntu <<>> ubuntu.com @localhost ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37832 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;ubuntu.com. IN A ;; ANSWER SECTION: ubuntu.com. 49 IN A 91.189.88.180 ubuntu.com. 49 IN A 91.189.88.181 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sun Aug 15 06:33:36 UTC 2021 ;; MSG SIZE rcvd: 71
Wie Sie sehen, beträgt die Abfragezeit 0 ms.
Sie können den ungebundenen DNS-Server auch vom Clientcomputer aus testen. In diesem Fall müssen Sie die IP Ihres ungebundenen DNS-Servers mit der Abfrage angeben:
dig ubuntu.com @69.87.221.220
Beispielausgabe:
; <<>> DiG 9.9.5-3ubuntu0.4-Ubuntu <<>> ubuntu.com @69.87.221.220 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 28051 ;; flags: qr rd ad; QUERY: 0, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; Query time: 365 msec ;; SERVER: 69.87.221.220#53(69.87.221.220) ;; WHEN: Sun Aug 15 12:04:37 IST 2021 ;; MSG SIZE rcvd: 12
Schritt 6 – Fehlerbehebung bei Unbound
Wenn Sie den Status des ungebundenen DNS überprüfen möchten, führen Sie den folgenden Befehl aus:
unbound-control status
Beispielausgabe:
version: 1.9.4 verbosity: 0 threads: 2 modules: 3 [ subnet validator iterator ] uptime: 65 seconds options: reuseport control(ssl) unbound (pid 3407) is running...
Wenn Sie einen DNS-Cache in einer Textdatei sichern möchten, führen Sie den folgenden Befehl aus:
unbound-control dump_cache > cache.txt
Sie können die cache.txt-Datei mit dem folgenden Befehl überprüfen:
cat cache.txt
Beispielausgabe:
START_RRSET_CACHE END_RRSET_CACHE START_MSG_CACHE END_MSG_CACHE EOF
In einigen Fällen kann Ihr DNS-Server Ihre Anfrage nicht beantworten. In diesem Fall können Sie den DNS-Cache mit dem folgenden Befehl leeren:
unbound-control flush ubuntu.com
Schlussfolgerung
In der obigen Anleitung haben wir erklärt, wie man einen ungebundenen DNS-Caching-Server unter Ubuntu 20.04 installiert und verwendet. Wir haben auch einige Tests mit dem Befehl dig durchgeführt, um unbound DNS abzufragen und eine Antwort zu erhalten. Probieren Sie es noch heute auf Ihrem VPS von Atlantic.Net aus!