La traducción del artículo se ha preparado para los estudiantes del curso . ¿Te interesa desarrollarte en esta área? Mira la grabación de la transmisión del taller de Ivan Piskunov

En este artículo, hablaré sobre los pasos para configurar un servidor DNS en RHEL 7 o CentOS 7. Para la demostración, utilicé Red Hat Enterprise Linux 7.4. Nuestro objetivo es crear un registro A y un registro PTR para la zona de búsqueda directa y la inversa, respectivamente.
Primero, instale los paquetes rpm necesarios para el servidor DNS.
NOTA: Para RHEL, debe tener una , o puede , que permitirá al administrador de paquetes «yum» instalar los paquetes rpm y dependencias necesarias.
# yum install bind bind-chroot caching-nameserverMis configuraciones:
# 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 enp0s3Dado que usaremos chroot, es necesario detener el servicio.
# systemctl stop named
# systemctl disable namedLuego, copie los archivos necesarios en el directorio chroot.
NOTA. Use el argumento -p en el comando cp para mantener los permisos y propietarios.
[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’Luego, copie los archivos de zona en el nuevo lugar.
[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
Ahora veamos el archivo de configuración principal.
```bash
# cd /var/named/chroot/etc/Limpie el contenido de named.conf e inserte lo siguiente.
[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";
};La información relacionada con la zona debe ser añadida en /var/named/chroot/etc/named.rfc1912.zones. Agregue los registros indicados a continuación. El archivo example.zone es un archivo de zona de vista directa, y example.rzone — es el archivo de zona inversa.
NOTA IMPORTANTE: La zona de vista inversa contiene 1.168.192, ya que mi dirección IP es 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; };
};Los archivos relacionados con las zonas están aquí:
# cd /var/named/chroot/var/named/A continuación, crearemos archivos para las zonas directa e inversa. Los nombres de los archivos serán los mismos que arriba en el archivo named.rfc1912.zones. Ya tenemos algunas plantillas predeterminadas que podemos usar.
# cp -p named.localhost example.zone
# cp -p named.loopback example.rzoneComo puede ver, los permisos actuales de todos los archivos y directorios son propiedad de 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 slavesCambia los permisos de todos los archivos, estableciendo al usuario root y al grupo named.
# chown root:named *Pero para data, el propietario debe ser 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 slavesAgregue el contenido a continuación al archivo de zona directa. Aquí creamos un registro A para localhost (golinuxhub-client) y otro para el servidor (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.7A continuación, agregue el contenido al archivo de zona inversa. Aquí creamos un registro PTR para golinuxhub-client y para el servidor 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.Antes de iniciar el servicio named-chroot, verifiquemos la configuración del archivo de zona.
[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
OKTodo parece estar bien. Ahora verifique el archivo de configuración utilizando el siguiente comando.
[root@golinuxhub-client named]# named-checkconf -t /var/named/chroot/ /etc/named.confAsí que, todo se realizó con éxito.
[root@golinuxhub-client named]# echo $?
0IMPORTANTE: tengo SELinux en modo permisivo
# getenforce
PermissiveTodo se ve bien, así que es hora de iniciar nuestro servicio named-chroot .
[root@golinuxhub-client named]# systemctl restart named-chroot[root@golinuxhub-client named]# systemctl status named-chroot
● named-chroot.service - Dominio de Nombre de Internet de Berkeley (DNS)
Cargado: cargado (\/usr\/lib\/systemd\/system\/named-chroot.service; deshabilitado; predeterminado del proveedor: deshabilitado)
Activo: activo (ejecutándose) desde lun 12 de feb 2018 21:53:23 IST; hace 19s
Procesos: 5236 ExecStop=\/bin\/sh -c \/usr\/sbin\/rndc stop >\/dev\/null 2>&1 || \/bin\/kill -TERM $MAINPID (código=sale, estado=0/SUCESSO)
Procesos: 5327 ExecStart=\/usr\/sbin\/named -u named -c ${NAMEDCONF} -t \/var\/named\/chroot $OPTIONS (código=sale, estado=0/SUCESSO)
Procesos: 5325 ExecStartPre=\/bin\/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then \/usr\/sbin\/named-checkconf -t \/var\/named\/chroot -z "$NAMEDCONF"; else echo "La verificación de archivos de zona está desactivada"; fi (código=sale, estado=0/SUCESSO)
PID Principal: 5330 (named)
CGroup: \/system.slice\/named-chroot.service
└─5330 \/usr\/sbin\/named -u named -c \/etc\/named.conf -t \/var\/named\/chroot
Feb 12 21:53:23 golinuxhub-client.ejemplo named[5330]: managed-keys-zone\/my_resolver: cargado serial 0
Feb 12 21:53:23 golinuxhub-client.ejemplo named[5330]: zona 0.in-addr.arpa\/IN\/my_resolver: cargado serial 0
Feb 12 21:53:23 golinuxhub-client.ejemplo named[5330]: zona 1.0.0.127.in-addr.arpa\/IN\/my_resolver: cargado serial 0
Feb 12 21:53:23 golinuxhub-client.ejemplo named[5330]: zona 1.168.192.in-addr.arpa\/IN\/my_resolver: cargado serial 1997022700
Feb 12 21:53:23 golinuxhub-client.ejemplo named[5330]: zona ejemplo\/IN\/my_resolver: cargado serial 1
Feb 12 21:53:23 golinuxhub-client.ejemplo named[5330]: zona localhost\/IN\/my_resolver: cargado serial 0
Feb 12 21:53:23 golinuxhub-client.ejemplo named[5330]: zona 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: cargado serial 0
Feb 12 21:53:23 golinuxhub-client.ejemplo named[5330]: zona localhost.localdomain\/IN\/my_resolver: cargado serial 0
Feb 12 21:53:23 golinuxhub-client.ejemplo named[5330]: todas las zonas cargadas
Feb 12 21:53:23 golinuxhub-client.ejemplo named[5330]: en ejecución
```bash
Asegúrate de que resolv.conf contenga tu dirección IP para que pueda funcionar como un servidor DNS.
```bash
# cat \/etc\/resolv.conf
search ejemplo
nameserver 192.168.1.7
```bash
Verifiquemos nuestro servidor DNS para la zona inversa usando 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
;; opciones globales: +cmd
;; Recibió respuesta:
;; ->>HEADER<<- opcode: QUERY, estado: NOERROR, id: 40331
;; banderas: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; SECCIÓN PSEUDOOPT:
; EDNS: versión: 0, banderas:; udp: 4096
;; SECCIÓN DE PREGUNTA:
;5.1.168.192.in-addr.arpa. IN PTR
;; SECCIÓN DE RESPUESTA:
5.1.168.192.in-addr.arpa. 86400 IN PTR golinuxhub-server.ejemplo.
;; SECCIÓN DE AUTORIDAD:
1.168.192.in-addr.arpa. 86400 IN NS ejemplo.
;; SECCIÓN ADICIONAL:
ejemplo. 86400 IN A 192.168.1.7
;; Tiempo de consulta: 1 mseg
;; SERVIDOR: 192.168.1.7#53(192.168.1.7)
;; CUANDO: lun feb 12 22:13:17 IST 2018
;; TAMAÑO MSG recibido: 122Como puedes ver, recibimos una respuesta positiva (ANSWER) a nuestra consulta (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 misma manera, podemos verificar la zona directa.
[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.5Este artículo está algo desactualizado, ya que en RHEL 7 ya no es necesario copiar los archivos de configuración de BIND en chroot. .
Fuente: habr.com
