Einführung
Unbound ist ein validierender, rekursiver und zwischenspeichernder DNS-Server. Allerdings kann der ungebundene DNS-Server nicht als autoritativer DNS-Server verwendet werden, was bedeutet, dass er nicht zum Hosten benutzerdefinierter Domänennameneinträge verwendet werden kann. Wenn es Ihr Ziel ist, einen Nur-Cache- oder Weiterleitungs-DNS-Server zu erstellen, ist Unbound daher möglicherweise Ihre bevorzugte Wahl, da es genau das tut und es gut macht.
Ziel
Ziel ist es, eine schnell und einfach zu befolgende Installations- und Konfigurationsanleitung für den Unbound-Cache-Only-DNS-Server auf Redhat 7 Linux bereitzustellen. Am Ende dieses Handbuchs können Sie den ungebundenen DNS-Server von allen Clients in Ihrem lokalen Netzwerk verwenden.
Anforderungen
Privilegierter Zugriff auf Ihren RedHat 7 Linux-Server mit konfigurierten Standard-RedHat-Repositories.
Schwierigkeit
MITTEL
Konventionen
- # – erfordert, dass bestimmte Linux-Befehle mit Root-Rechten ausgeführt werden, entweder direkt als Root-Benutzer oder durch Verwendung von
sudo
Befehl - $ – erfordert, dass bestimmte Linux-Befehle als normaler, nicht privilegierter Benutzer ausgeführt werden
Anleitung
Ungebundene und DNS-Tools-Installation
Im ersten Schritt installieren wir den eigentlichen ungebundenen DNS-Server sowie DNS-Tools, die schließlich zum Testen Ihrer reinen DNS-Cache-Serverkonfiguration verwendet werden. Vorausgesetzt, Sie haben Ihr Redhat-Repository richtig konfiguriert, können Sie beide installieren, indem Sie den folgenden Linux-Befehl ausführen:
# yum install unbound bind-utils
Grundlegende ungebundene Konfiguration
Jetzt werden wir eine grundlegende Konfiguration des Nur-Caching-Servers für ungebundenes DNS durchführen. Dazu bearbeiten Sie die Konfigurationsdatei von Unbound /etc/unbound/unbound.conf
entweder mit einem Texteditor oder mit einem der folgenden sed
Befehle. Suchen Sie zunächst mit Ihrem bevorzugten Texteditor die Zeile # interface: 0.0.0.0
und kommentieren Sie es aus, indem Sie das vorangestellte #
entfernen Schild. Verwenden Sie alternativ den folgenden sed
Befehl:
# sed -i '/interface: 0.0.0.0$/s/#//' /etc/unbound/unbound.conf
Die obige Konfiguration weist den ungebundenen DNS-Server an, auf allen lokalen Netzwerkschnittstellen zu lauschen. Erlauben Sie als Nächstes Ihren LAN-Clients, den Cache von Unbound abzufragen. Suchen Sie die entsprechende Zeile und ändern Sie die Standard-Loopback-IP-Adresse 127.0.0.0/8
an Netzwerkadresse Ihres LAN zB. 10.0.0.0/24
:
FROM: access-control: 127.0.0.0/8 allow TO access-control: 10.0.0.0/24 allow
Das Obige kann auch mit sed
durchgeführt werden Befehl:
# sed -i 's/127.0.0.0\/8 allow/10.0.0.0\/24 allow/' /etc/unbound/unbound.conf
DNSSEC-Unterstützung einrichten
Als Nächstes weisen wir den ungebundenen DNS-Server an, RSA-Schlüssel zu generieren, um DNSSEC-Unterstützung bereitzustellen:
# unbound-control-setup setup in directory /etc/unbound generating unbound_server.key Generating RSA private key, 1536 bit long modulus .................++++ .........++++ e is 65537 (0x10001) generating unbound_control.key Generating RSA private key, 1536 bit long modulus .........++++ ..................................++++ e is 65537 (0x10001) create unbound_server.pem (self signed certificate) create unbound_control.pem (signed client certificate) Signature ok subject=/CN=unbound-control Getting CA Private Key Setup success. Certificates created. Enable in unbound.conf file to use
Alles, was bleibt, ist die Konfiguration von Unbound zu überprüfen:
# unbound-checkconf unbound-checkconf: no errors in /etc/unbound/unbound.conf
Unbound-Server aktivieren und starten
In diesem Stadium aktivieren wir den ungebundenen DNS-Server, um beim Booten zu starten:
# systemctl enable unbound Created symlink from /etc/systemd/system/multi-user.target.wants/unbound.service to /usr/lib/systemd/system/unbound.service.
und starten Sie den eigentlichen Dienst:
# service unbound start Redirecting to /bin/systemctl start unbound.service
Stellen Sie sicher, dass der ungebundene DNS-Server läuft, indem Sie seinen Status überprüfen:
[root@localhost unbound]# service unbound status Redirecting to /bin/systemctl status unbound.service ● unbound.service - Unbound recursive Domain Name Server Loaded: loaded (/usr/lib/systemd/system/unbound.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2016-12-07 10:32:58 AEDT; 6s ago Process: 2355 ExecStartPre=/usr/sbin/unbound-anchor -a /var/lib/unbound/root.key -c /etc/unbound/icannbundle.pem (code=exited, status=0/SUCCESS) Process: 2353 ExecStartPre=/usr/sbin/unbound-checkconf (code=exited, status=0/SUCCESS) Main PID: 2357 (unbound) CGroup: /system.slice/unbound.service └─2357 /usr/sbin/unbound -d Dec 07 10:32:57 localhost.localdomain systemd[1]: Starting Unbound recursive Domain Name Server... Dec 07 10:32:57 localhost.localdomain unbound-checkconf[2353]: unbound-checkconf: no errors in /etc/unbound/unbound.conf Dec 07 10:32:58 localhost.localdomain systemd[1]: Started Unbound recursive Domain Name Server. Dec 07 10:32:58 localhost.localdomain unbound[2357]: Dec 07 10:32:58 unbound[2357:0] warning: increased limit(open files) from 1024 to 8266 Dec 07 10:32:58 localhost.localdomain unbound[2357]: [2357:0] notice: init module 0: validator Dec 07 10:32:58 localhost.localdomain unbound[2357]: [2357:0] notice: init module 1: iterator Dec 07 10:32:58 localhost.localdomain unbound[2357]: [2357:0] info: start of service (unbound 1.4.20).
DNS-Firewall-Port öffnen
Damit Ihre lokalen LAN-Clients eine Verbindung zu Ihrem neuen ungebundenen Cache-Only-DNS-Server herstellen können, müssen Sie einen DNS-Port öffnen:
# firewall-cmd --permanent --add-service dns success # firewall-cmd --reload success
Alles fertig, wir sind jetzt bereit zum Testen.
Testen
Schließlich sind wir an einem Punkt angelangt, an dem wir einige grundlegende Tests unseres neuen ungebundenen DNS-Cache-Only-Servers durchführen können. Dafür verwenden wir dig
Befehl, der ein Teil der zuvor installierten bind-utils
ist Paket, um einige DNS-Abfragen durchzuführen. Führen Sie zuerst eine DNS-Abfrage auf dem tatsächlichen DNS-Server aus:
# dig @localhost example.com ; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> @localhost example.com ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53485 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;example.com. IN A ;; ANSWER SECTION: example.com. 86400 IN A 93.184.216.34 ;; Query time: 817 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Wed Dec 07 10:40:46 AEDT 2016 ;; MSG SIZE rcvd: 56
Beachten Sie, dass die Abfragezeit mehr als 817 ms beträgt. Da wir einen Nur-Cache-DNS-Server konfiguriert haben, wird diese Abfrage jetzt zwischengespeichert, sodass jede nachfolgende DNS-Abfrageauflösung desselben Domänennamens ziemlich sofort erfolgt:
# dig @localhost example.com ; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> @localhost example.com ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34443 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;example.com. IN A ;; ANSWER SECTION: example.com. 86272 IN A 93.184.216.34 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Wed Dec 07 10:42:54 AEDT 2016 ;; MSG SIZE rcvd: 56
Schließlich können Sie jetzt die Konfiguration des Ubound-DNS-Servers von Ihren lokalen LAN-Clients aus testen, indem Sie sie auf die IP-Adresse von Unbound verweisen, z. 10.1.1.45:
$ dig @10.1.1.45 example.com ; <<>> DiG 9.9.5-9+deb8u6-Debian <<>> @10.1.1.45 example.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 50494 ;; flags: qr rd ad; QUERY: 0, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; Query time: 0 msec ;; SERVER: 10.1.1.45#53(10.1.1.45) ;; WHEN: Wed Dec 07 10:45:43 AEDT 2016 ;; MSG SIZE rcvd: 12