Übersetzung des Artikels für Studierende des Kurses . Interessiert daran, in diesem Bereich zu wachsen? Sehen Sie sich die Aufzeichnung des Workshops von Ivan Piskunov an.

In diesem Artikel erkläre ich die Schritte zur Einrichtung eines DNS-Servers auf RHEL 7 oder CentOS 7. Zur Demonstration habe ich Red Hat Enterprise Linux 7.4 verwendet. Unser Ziel ist es, einen A-Eintrag und einen PTR-Eintrag für die direkte und umgekehrte Zonenansicht zu erstellen.
Zuerst installieren Sie die erforderlichen RPM-Pakete für den DNS-Server.
HINWEIS: Für RHEL benötigen Sie eine , oder Sie können , mit dem der Paketmanager „yum“ die erforderlichen RPM-Pakete und Abhängigkeiten installieren kann.
# yum install bind bind-chroot caching-nameserverMeine Einstellungen:
# hostname
golinuxhub-client.example
Мой IP-адрес 192.168.1.7
# ip address | egrep 'inet.*enp0s3'
inet 192.168.1.7/24 brd 192.168.1.255 scope global dynamic enp0s3Da wir chroot verwenden werden, muss der Dienst deaktiviert werden.
# systemctl stop named
# systemctl disable namedKopieren Sie dann die erforderlichen Dateien in das chroot-Verzeichnis.
HINWEIS. Verwenden Sie das Argument -p im Befehl cp zum Beibehalten von Rechten und Eigentümern.
[root@golinuxhub-client ~]# cp -rpvf /usr/share/doc/bind-9.9.4/sample/etc/* /var/named/chroot/etc/
‘/usr/share/doc/bind-9.9.4/sample/etc/named.conf’ -> ‘/var/named/chroot/etc/named.conf’
‘/usr/share/doc/bind-9.9.4/sample/etc/named.rfc1912.zones’ -> ‘/var/named/chroot/etc/named.rfc1912.zones’Kopieren Sie dann die zonenbezogenen Dateien an einen neuen Speicherort.
[root@golinuxhub-client ~]# cp -rpvf /usr/share/doc/bind-9.9.4/sample/var/named/* /var/named/chroot/var/named/
‘/usr/share/doc/bind-9.9.4/sample/var/named/data’ -> ‘/var/named/chroot/var/named/data’
‘/usr/share/doc/bind-9.9.4/sample/var/named/my.external.zone.db’ -> ‘/var/named/chroot/var/named/my.external.zone.db’
‘/usr/share/doc/bind-9.9.4/sample/var/named/my.internal.zone.db’ -> ‘/var/named/chroot/var/named/my.internal.zone.db’
‘/usr/share/doc/bind-9.9.4/sample/var/named/named.ca’ -> ‘/var/named/chroot/var/named/named.ca’
‘/usr/share/doc/bind-9.9.4/sample/var/named/named.empty’ -> ‘/var/named/chroot/var/named/named.empty’
‘/usr/share/doc/bind-9.9.4/sample/var/named/named.localhost’ -> ‘/var/named/chroot/var/named/named.localhost’
‘/usr/share/doc/bind-9.9.4/sample/var/named/named.loopback’ -> ‘/var/named/chroot/var/named/named.loopback’
‘/usr/share/doc/bind-9.9.4/sample/var/named/slaves’ -> ‘/var/named/chroot/var/named/slaves’
‘/usr/share/doc/bind-9.9.4/sample/var/named/slaves/my.ddns.internal.zone.db’ -> ‘/var/named/chroot/var/named/slaves/my.ddns.internal.zone.db’
‘/usr/share/doc/bind-9.9.4/sample/var/named/slaves/my.slave.internal.zone.db’ -> ‘/var/named/chroot/var/named/slaves/my.slave.internal.zone.db’
```bash
Jetzt werfen wir einen Blick auf die Hauptkonfigurationsdatei.
```bash
# cd /var/named/chroot/etc/Löschen Sie den Inhalt der named.conf und fügen Sie das Folgende ein.
[root@golinuxhub-client etc]# vim named.conf
options {
listen-on port 53 { 127.0.0.1; any; };
# listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; any; };
allow-query-cache { localhost; any; };
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view my_resolver {
match-clients { localhost; any; };
recursion yes;
include "/etc/named.rfc1912.zones";
};Die Informationen zur Zone müssen hinzugefügt werden in /var/named/chroot/etc/named.rfc1912.zones. Fügen Sie die untenstehenden Einträge hinzu. Die Datei example.zone ist die Datei für die direkte Zone, und example.rzone ist die Datei für die umgekehrte Zone.
WICHTIGER HINWEIS: Die umgekehrte Zone enthält 1.168.192, da meine IP-Adresse 192.168.1.7 ist.
zone "example" IN {
type master;
file "example.zone";
allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "example.rzone";
allow-update { none; };
};Die mit den Zonen verbundenen Dateien befinden sich hier:
# cd /var/named/chroot/var/named/Lassen Sie uns nun die Dateien für die direkte und die umgekehrte Zone erstellen. Die Dateinamen entsprechen den oben in der Datei named.rfc1912.zones. Wir haben bereits einige Standardvorlagen, die wir verwenden können.
# cp -p named.localhost example.zone
# cp -p named.loopback example.rzoneWie Sie sehen können, sind die aktuellen Berechtigungen für alle Dateien und Verzeichnisse zugewiesen root.
[root@golinuxhub-client named]# ll
total 32
drwxr-xr-x. 2 root root 6 Mai 22 2017 data
-rw-r--r--. 1 root root 168 Mai 22 2017 example.rzone
-rw-r--r--. 1 root root 152 Mai 22 2017 example.zone
-rw-r--r--. 1 root root 56 Mai 22 2017 my.external.zone.db
-rw-r--r--. 1 root root 56 Mai 22 2017 my.internal.zone.db
-rw-r--r--. 1 root root 2281 Mai 22 2017 named.ca
-rw-r--r--. 1 root root 152 Mai 22 2017 named.empty
-rw-r--r--. 1 root root 152 Mai 22 2017 named.localhost
-rw-r--r--. 1 root root 168 Mai 22 2017 named.loopback
drwxr-xr-x. 2 root root 71 Feb 12 21:02 slavesÄndern Sie die Berechtigungen aller Dateien und setzen Sie den Benutzer als Besitzer. root und Gruppe named.
# chown root:named *Aber für data muss der Besitzer sein named:named.
# chown -R named:named data
# ls -l
total 32
drwxr-xr-x. 2 named named 6 May 22 2017 data
-rw-r--r--. 1 root named 168 May 22 2017 example.rzone
-rw-r--r--. 1 root named 152 May 22 2017 example.zone
-rw-r--r--. 1 root named 56 May 22 2017 my.external.zone.db
-rw-r--r--. 1 root named 56 May 22 2017 my.internal.zone.db
-rw-r--r--. 1 root named 2281 May 22 2017 named.ca
-rw-r--r--. 1 root named 152 May 22 2017 named.empty
-rw-r--r--. 1 root named 152 May 22 2017 named.localhost
-rw-r--r--. 1 root named 168 May 22 2017 named.loopback
drwxr-xr-x. 2 root named 71 Feb 12 21:02 slavesFügen Sie den folgenden Inhalt in die Zonendatei ein. Hier erstellen wir einen A-Eintrag für localhost (golinuxhub-client) und einen weiteren für den Server (golinuxhub-server).
# vim example.zone
$TTL 1D
@ IN SOA example. root (
1 ; serial
3H ; refresh
15M ; retry
1W ; expire
1D ) ; minimum
IN NS example.
IN A 192.168.1.7
golinuxhub-server IN A 192.168.1.5
golinuxhub-client IN A 192.169.1.7Fügen Sie anschließend den Inhalt in die Rückezonendatei ein. Hier erstellen wir einen PTR-Eintrag für golinuxhub-client und für den Server golinuxhub-server.
# vim example.rzone
$TTL 1D
@ IN SOA example. root.example. (
1997022700 ; serial
28800 ; refresh
14400 ; retry
3600000 ; expire
86400 ) ; minimum
IN NS example.
5 IN PTR golinuxhub-server.example.
7 IN PTR golinuxhub-client.example.Bevor wir den Dienst named-chroot, starten, überprüfen wir die Konfiguration der Zonendatei.
[root@golinuxhub-client named]# named-checkzone golinuxhub-client.example example.zone
zone golinuxhub-client.example/IN: serial 1 geladen
OK
[root@golinuxhub-client named]# named-checkzone golinuxhub-client.example example.rzone
zone golinuxhub-client.example/IN: serial 1997022700 geladen
OKAlles sieht gut aus. Überprüfen Sie nun die Konfigurationsdatei mit dem folgenden Befehl.
[root@golinuxhub-client named]# named-checkconf -t /var/named/chroot/ /etc/named.confAlso, alles wurde erfolgreich abgeschlossen.
[root@golinuxhub-client named]# echo $?
0WICHTIGER HINWEIS: SELinux läuft im permissiven Modus.
# getenforce
PermissiveAlles sieht gut aus, also ist es an der Zeit, unseren Service zu starten. named-chroot .
[root@golinuxhub-client named]# systemctl restart named-chroot[root@golinuxhub-client named]# systemctl status named-chroot
● named-chroot.service - Berkeley Internet Name Domain (DNS)
Loaded: geladen (/usr/lib/systemd/system/named-chroot.service; deaktiviert; Vorgaben des Anbieters: deaktiviert)
Active: aktiv (laufend) seit Mo 12.02.2018 21:53:23 IST; vor 19s
Process: 5236 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID (code=exited, status=0/SUCCESS)
Process: 5327 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} -t /var/named/chroot $OPTIONS (code=exited, status=0/SUCCESS)
Process: 5325 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -t /var/named/chroot -z "$NAMEDCONF"; else echo "Überprüfung der Zonen-Dateien ist deaktiviert"; fi (code=exited, status=0/SUCCESS)
Main PID: 5330 (named)
CGroup: /system.slice/named-chroot.service
└─5330 /usr/sbin/named -u named -c /etc/named.conf -t /var/named/chroot
12. Feb 21:53:23 golinuxhub-client.example named[5330]: managed-keys-zone/my_resolver: geladen, Seriennummer 0
12. Feb 21:53:23 golinuxhub-client.example named[5330]: zone 0.in-addr.arpa/IN/my_resolver: geladen, Seriennummer 0
12. Feb 21:53:23 golinuxhub-client.example named[5330]: zone 1.0.0.127.in-addr.arpa/IN/my_resolver: geladen, Seriennummer 0
12. Feb 21:53:23 golinuxhub-client.example named[5330]: zone 1.168.192.in-addr.arpa/IN/my_resolver: geladen, Seriennummer 1997022700
12. Feb 21:53:23 golinuxhub-client.example named[5330]: zone example/IN/my_resolver: geladen, Seriennummer 1
12. Feb 21:53:23 golinuxhub-client.example named[5330]: zone localhost/IN/my_resolver: geladen, Seriennummer 0
12. Feb 21:53:23 golinuxhub-client.example named[5330]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN/my_resolver: geladen, Seriennummer 0
12. Feb 21:53:23 golinuxhub-client.example named[5330]: zone localhost.localdomain/IN/my_resolver: geladen, Seriennummer 0
12. Feb 21:53:23 golinuxhub-client.example named[5330]: alle Zonen geladen
12. Feb 21:53:23 golinuxhub-client.example named[5330]: läuft
```bash
Stellen Sie sicher, dass resolv.conf Ihre IP-Adresse enthält, damit es als DNS-Server funktionieren kann.
```bash
# cat /etc/resolv.conf
search example
nameserver 192.168.1.7
```bash
Lassen Sie uns unseren DNS-Server auf die Rückwärtszone überprüfen, indem wir dig verwenden.
```bash
[root@golinuxhub-client named]# dig -x 192.168.1.5
; <> DiG 9.9.4-RedHat-9.9.4-50.el7 <> -x 192.168.1.5
;; globale Optionen: +cmd
;; Antwort erhalten:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40331
;; flags: qr aa rd ra; QUERY: 1, ANTWORT: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; FRAGESECTION:
;5.1.168.192.in-addr.arpa. IN PTR
;; ANTWORTSECTION:
5.1.168.192.in-addr.arpa. 86400 IN PTR golinuxhub-server.example.
;; AUTHORITYSECTION:
1.168.192.in-addr.arpa. 86400 IN NS example.
;; ADDITIONELLSECTION:
example. 86400 IN A 192.168.1.7
;; Abfragezeit: 1 msec
;; SERVER: 192.168.1.7#53(192.168.1.7)
;; WANN: Mo 12. Feb 22:13:17 IST 2018
;; MSG GRÖSSE empfangen: 122Wie Sie sehen, haben wir eine positive Antwort (ANSWER) auf unsere Anfrage (QUERY) erhalten.
[root@golinuxhub-client named]# dig -x 192.168.1.7
; <> DiG 9.9.4-RedHat-9.9.4-50.el7 <> -x 192.168.1.7
;; globale Optionen: +cmd
;; Antwort erhalten:
;; ->>HEADER<<- Opcode: QUERY, Status: NOERROR, ID: 55804
;; Flags: qr aa rd ra; QUERY: 1, ANTWORT: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: Version: 0, Flags:; UDP: 4096
;; FRAGESEKTION:
;7.1.168.192.in-addr.arpa. IN PTR
;; ANTWORTSEKTION:
7.1.168.192.in-addr.arpa. 86400 IN PTR golinuxhub-client.example.
;; AUTHORITYSEKTION:
1.168.192.in-addr.arpa. 86400 IN NS example.
;; ZUSÄTZLICHE SEKTION:
example. 86400 IN A 192.168.1.7
;; Abfragezeit: 1 msec
;; SERVER: 192.168.1.7#53(192.168.1.7)
;; WANN: Mo Feb 12 22:12:54 IST 2018
;; MSG GRÖSSE empfangen: 122Ebenso können wir die direkte Zone überprüfen.
[root@golinuxhub-client named]# nslookup golinuxhub-client.example
Server: 192.168.1.7
Adresse: 192.168.1.7#53
Name: golinuxhub-client.example
Adresse: 192.169.1.7
[root@golinuxhub-client named]# nslookup golinuxhub-server.example
Server: 192.168.1.7
Adresse: 192.168.1.7#53
Name: golinuxhub-server.example
Adresse: 192.168.1.5Dieser Artikel ist etwas veraltet, da es in RHEL 7 nicht mehr erforderlich ist, die Konfigurationsdateien von bind in chroot zu kopieren. .
Quelle: habr.com
