La traduction de l'article est préparée pour les étudiants du cours Vous souhaitez développer vos compétences dans ce domaine ? Regardez l'enregistrement de la diffusion du webinaire d'Ivan Piskounov.

Dans cet article, je vais vous expliquer les étapes pour configurer un serveur DNS sur RHEL 7 ou CentOS 7. Pour la démonstration, j'ai utilisé Red Hat Enterprise Linux 7.4. Notre objectif est de créer un enregistrement A et un enregistrement PTR pour la zone de recherche directe et inverse, respectivement.
Tout d'abord, installez les paquets rpm nécessaires pour le serveur DNS.
REMARQUE : Pour RHEL, vous devez avoir , ou vous pouvez , grùce auquel le gestionnaire de paquets « yum » pourra installer les paquets rpm nécessaires et leurs dépendances.
# yum install bind bind-chroot caching-nameserverMes configurations :
# 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 enp0s3Puisque nous allons utiliser chroot, il est nécessaire de désactiver le service.
# systemctl stop named
# systemctl disable namedEnsuite, copiez les fichiers nécessaires dans le répertoire chroot.
REMARQUE. Utilisez l'argument -p dans la commande cp pour conserver les droits et les propriétaires.
[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âEnsuite, copiez les fichiers liĂ©s Ă la zone Ă un nouvel emplacement.
[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
Maintenant, regardons le fichier de configuration principal.
```bash
# cd /var/named/chroot/etc/Effacez le contenu de named.conf et insérez ce qui suit.
[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";
};Les informations concernant la zone doivent ĂȘtre ajoutĂ©es Ă /var/named/chroot/etc/named.rfc1912.zones. Ajoutez les enregistrements ci-dessous. Le fichier example.zone est un fichier de zone de recherche directe, et example.rzone est le fichier de zone inverse.
REMARQUE IMPORTANTE : La zone de recherche inverse contient 1.168.192, car mon adresse IP est 192.168.1.7
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; };
};Les fichiers associés aux zones se trouvent ici :
# cd /var/named/chroot/var/named/Ensuite, crĂ©ons les fichiers pour la zone directe et la zone inverse. Les noms des fichiers seront les mĂȘmes que ci-dessus dans le fichier named.rfc1912.zones. Nous avons dĂ©jĂ quelques modĂšles par dĂ©faut que nous pouvons utiliser.
# cp -p named.localhost example.zone
# cp -p named.loopback example.rzoneComme vous pouvez le voir, les autorisations actuelles de tous les fichiers et répertoires appartiennent à root.
[root@golinuxhub-client named]# ll
total 32
drwxr-xr-x. 2 root root 6 May 22 2017 data
-rw-r--r--. 1 root root 168 May 22 2017 example.rzone
-rw-r--r--. 1 root root 152 May 22 2017 example.zone
-rw-r--r--. 1 root root 56 May 22 2017 my.external.zone.db
-rw-r--r--. 1 root root 56 May 22 2017 my.internal.zone.db
-rw-r--r--. 1 root root 2281 May 22 2017 named.ca
-rw-r--r--. 1 root root 152 May 22 2017 named.empty
-rw-r--r--. 1 root root 152 May 22 2017 named.localhost
-rw-r--r--. 1 root root 168 May 22 2017 named.loopback
drwxr-xr-x. 2 root root 71 Feb 12 21:02 slavesChangez les droits de tous les fichiers en désignant comme propriétaire l'utilisateur root et le groupe named.
# chown root:named *Mais pour data, le propriĂ©taire doit ĂȘtre 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 slavesAjoutez le contenu ci-dessous dans le fichier de la zone directe. Ici, nous créons un enregistrement A pour localhost (golinuxhub-client) et un autre pour le serveur (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.7Ensuite, ajoutez le contenu dans le fichier de la zone inverse. Ici, nous créons un enregistrement PTR pour golinuxhub-client et pour le serveur 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.Avant de lancer le service named-chroot, vérifions la configuration du fichier de zone.
[root@golinuxhub-client named]# named-checkzone golinuxhub-client.example example.zone
zone golinuxhub-client.example/IN: loaded serial 1
OK
[root@golinuxhub-client named]# named-checkzone golinuxhub-client.example example.rzone
zone golinuxhub-client.example/IN: loaded serial 1997022700
OKTout semble bon. Maintenant, vérifiez le fichier de configuration en utilisant la commande suivante.
[root@golinuxhub-client named]# named-checkconf -t /var/named/chroot/ /etc/named.confAinsi, tout a été effectué avec succÚs.
[root@golinuxhub-client named]# echo $?
0REMARQUE IMPORTANTE : mon SELinux est en mode permissif
# getenforce
PermissiveTout semble en ordre, il est donc temps de lancer notre service 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)
Chargé : chargé ( /usr/lib/systemd/system/named-chroot.service ; désactivé ; configuration par défaut : désactivé)
Actif : actif (en cours d'exécution) depuis lun. 12 févr. 2018 21:53:23 IST ; il y a 19s
Processus : 5236 ExecStop= /bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID (code=exitĂ©, Ă©tat=0/SUCCĂS)
Processus : 5327 ExecStart= /usr/sbin/named -u named -c ${NAMEDCONF} -t /var/named/chroot $OPTIONS (code=exitĂ©, Ă©tat=0/SUCCĂS)
Processus : 5325 ExecStartPre= /bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -t /var/named/chroot -z "$NAMEDCONF"; else echo "La vĂ©rification des fichiers de zones est dĂ©sactivĂ©e"; fi (code=exitĂ©, Ă©tat=0/SUCCĂS)
PID principal : 5330 (named)
CGroup : /system.slice/named-chroot.service
ââ5330 /usr/sbin/named -u named -c /etc/named.conf -t /var/named/chroot
12 févr. 21:53:23 golinuxhub-client.example named[5330]: managed-keys-zone/my_resolver: série chargée 0
12 févr. 21:53:23 golinuxhub-client.example named[5330]: zone 0.in-addr.arpa/IN/my_resolver: série chargée 0
12 févr. 21:53:23 golinuxhub-client.example named[5330]: zone 1.0.0.127.in-addr.arpa/IN/my_resolver: série chargée 0
12 févr. 21:53:23 golinuxhub-client.example named[5330]: zone 1.168.192.in-addr.arpa/IN/my_resolver: série chargée 1997022700
12 févr. 21:53:23 golinuxhub-client.example named[5330]: zone example/IN/my_resolver: série chargée 1
12 févr. 21:53:23 golinuxhub-client.example named[5330]: zone localhost/IN/my_resolver: série chargée 0
12 févr. 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: série chargée 0
12 févr. 21:53:23 golinuxhub-client.example named[5330]: zone localhost.localdomain/IN/my_resolver: série chargée 0
12 févr. 21:53:23 golinuxhub-client.example named[5330]: toutes les zones chargées
12 févr. 21:53:23 golinuxhub-client.example named[5330]: en cours d'exécution
```bash
Veuillez vous assurer que resolv.conf contient votre adresse IP afin qu'il puisse fonctionner en tant que serveur DNS.
```bash
# cat /etc/resolv.conf
search example
nameserver 192.168.1.7
```bash
Vérifions notre serveur DNS pour la zone inverse, en utilisant dig.
```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
;; options globales : +cmd
;; Réponse reçue :
;; ->>HEADER<<- opcode : QUERY, statut : NOERROR, id : 40331
;; flags : qr aa rd ra ; QUERY : 1, RĂPONSE : 1, AUTORITĂ : 1, ADDITIONNEL : 2
;; SECTION PSEUDOOPTION OPT :
; EDNS : version : 0, flags : ; udp : 4096
;; SECTION QUESTION :
;5.1.168.192.in-addr.arpa. IN PTR
;; SECTION RĂPONSE :
5.1.168.192.in-addr.arpa. 86400 IN PTR golinuxhub-server.example.
;; SECTION AUTORITĂ :
1.168.192.in-addr.arpa. 86400 IN NS example.
;; SECTION ADDITIONNEL :
example. 86400 IN A 192.168.1.7
;; Temps de requĂȘte : 1 msec
;; SERVEUR : 192.168.1.7#53(192.168.1.7)
;; QUAND : lun. 12 févr. 22:13:17 IST 2018
;; TAILLE MSG reçue : 122Comme vous pouvez le voir, nous avons reçu une rĂ©ponse positive (ANSWER) Ă notre requĂȘte (QUERY).
[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
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55804
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;7.1.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
7.1.168.192.in-addr.arpa. 86400 IN PTR golinuxhub-client.example.
;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 86400 IN NS example.
;; ADDITIONAL SECTION:
example. 86400 IN A 192.168.1.7
;; Query time: 1 msec
;; SERVER: 192.168.1.7#53(192.168.1.7)
;; WHEN: Mon Feb 12 22:12:54 IST 2018
;; MSG SIZE rcvd: 122De la mĂȘme maniĂšre, nous pouvons vĂ©rifier la zone directe.
[root@golinuxhub-client named]# nslookup golinuxhub-client.example
Server: 192.168.1.7
Address: 192.168.1.7#53
Name: golinuxhub-client.example
Address: 192.169.1.7
[root@golinuxhub-client named]# nslookup golinuxhub-server.example
Server: 192.168.1.7
Address: 192.168.1.7#53
Name: golinuxhub-server.example
Address: 192.168.1.5Cet article est un peu obsolÚte, car dans RHEL 7, il n'est plus nécessaire de copier les fichiers de configuration bind dans chroot. .
Source : habr.com
