Configuración de un servidor DNS en Centos 7

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

La configuración de un servidor DNS en Linux Centos 7 es muy sencilla. Primero de todo, tendremos que instalar el producto bind.

Curso de Servidores Linux en CENTOS para principiantes

Curso de Servidores Linux en CENTOS para principiantes

Instalación de bind

yum -y install bind bind-utils

Configuración del fichero named.conf

Seguidamente, en el fichero /etc/named.conf, definimos la zona del servicio que queremos resolver. En este caso, quiero resolver el nombre de servicio main.webserver.local:

zone «webserver.local» IN {
type master;
file «forward.webserverlocal.db«;
allow-update { none; };
};

Lenovo IdeaPad 5 - Ordenador Portátil 15.6" FullHD (AMD Ryzen 5 5500U, 16GB RAM, 512GB...
  • Pantalla de 15.6" FullHD (1920x1080) 300nits
  • Procesador AMD Ryzen 5 5500U (6C/12T, 2.1 GHz/4.04GHz, 8 MB)
  • Memoria RAM de 16GB

zone «2.0.0.10.in-addr.arpa» IN {
type master;
file «reverse.webserverlocal.db«;
allow-update { none; };
};

HP 15s-fq2038ns - Ordenador Portátil de 15.6” FHD (Intel Core i5-1135G7, 8GB RAM, 512GB...
  • Pantalla Full HD de 15.6" (39,6 cm) en diagonal; bisel micro-edge; antirreflectante; 250 nits; 45 % NTSC (1920 x 1080), 60Hz
  • Procesador Intel Core i5-1135G7 (hasta 4,2 GHz con tecnología Intel Turbo Boost, 8 MB de caché L3, 4 núcleos)
  • Memoria RAM DDR4-2666 MHz de 8 GB

Configuración del fichero forward

En el fichero forward.webserverloca.db definimos las IPs y el nombres del servicio. Es decir, un servicio puede apuntar a varios servidores como puede ocurrir con google.com:

C:\Users\dmartinez28>nslookup www.google.com
Server: resolver.hp.net
Address: 16.110.135.51

Non-authoritative answer:
Name: www.google.com
Addresses: 2607:f8b0:4000:815::2004
74.125.195.105
74.125.195.147
74.125.195.99
74.125.195.104
74.125.195.106
74.125.195.103

C:\Users\dmartinez28>

Así que veamos nuestro fichero de «forward»:

[[email protected] ~]# cat /var/named/forward.webserverlocal.db
$TTL 86400
@ IN SOA maindns.webserver.local. root.webserver.local. (
2011071001 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
@ IN NS maindns.webserver.local.
@ IN NS secondarydns.webserever.local.
@ IN A 10.0.0.2
@ IN A 10.0.0.3
maindns IN A 10.0.0.2
secondarydns IN A 10.0.0.3
[[email protected] ~]#

Configuración del fichero reverse

En el fichero «reverse» definimos el camino de respuesta, por llamarlo de alguna manera:

[[email protected] ~]# cat /var/named/reverse.webserverlocal.db
$TTL 86400
@ IN SOA main.webserver.local. root.webserver.local. (
2011071001 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
@ IN NS masterdns.webserver.local.
maindns IN A 10.0.0.2
secondarydns IN A 10.0.0.3
101 IN PTR maindns.webeserver.local.
102 IN PTR secondarydns.unixmen.local.
[[email protected] ~]#

Probando el servidor de DNS

Una vez definidos todos los parámetros, reiniciamos el servicio named con el comando systemctl restart named.

En nuestro fichero /etc/resolv.conf, tenemos que apuntar a la IP donde corre el servicio de DNS. En el caso para este ejemplo, todo lo he ubicado en el mismo servidor:

[[email protected] ~]# cat /etc/resolv.conf
nameserver 10.0.0.2
[[email protected]7 ~]#

Finalmente, probamos la resolución del nombre vía DNS:

[[email protected] ~]# dig maindns.webserver.local

; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> maindns.webserver.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33754
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;maindns.webserver.local. IN A

;; ANSWER SECTION:
maindns.webserver.local. 86400 IN A 10.0.0.2

;; AUTHORITY SECTION:
webserver.local. 86400 IN NS secondarydns.webserever.local.
webserver.local. 86400 IN NS maindns.webserver.local.

;; Query time: 0 msec
;; SERVER: 10.0.0.2#53(10.0.0.2)
;; WHEN: Mon Nov 12 13:27:25 CET 2018
;; MSG SIZE rcvd: 120

[[email protected] ~]#

A lo mejor estás más acostumbrado al antiguo nslookup:

[[email protected] ~]# nslookup maindns.webserver.local
Server: 10.0.0.2
Address: 10.0.0.2#53

Name: maindns.webserver.local
Address: 10.0.0.2

[[email protected] ~]#

También voy a comprobar el servidor WEB de pruebas que tengo arrancado en cada uno de los servidores:

[[email protected] ~]# curl -s http://maindns.webserver.local
<html>
<body>
Hola desde el Webserver 1
</body>
</html>
[[email protected] ~]# curl -s http://secondarydns.webserver.local
<html>
<body>
Hola desde el Webserver 2
</body>
</html>
[[email protected] ~]#

Configuración del DNS por round robin

Ahora queremos que si la aplicación de un servidor cae, el servicio se siga dando por el otro servidor WEB. A esta configuración se la denomina «alta disponibilidad» por round robin de DNS.

Lo que voy a hacer es configurar el DNS para que un mismo nombre apunte a varias IPs distintas. Cada IP está levantada en un servidor (sistema operativo) diferente, por lo que si cae el «Webserver 1», el servicio se seguirá dando por el «Webserver 2».

El nombre del servicio al que voy a apuntar se llama webservertest y tengo un servidor WEB arrancado en el servidor con IP 10.0.0.2 y el otro Webserver en el servidor 10.0.0.3.

El resultado es el siguiente:

[[email protected] named]# curl -s http://webservertest
<html>
<body>
Hola desde el Webserver 1
</body>
</html>
[[email protected] named]# systemctl stop httpd
[[email protected] named]# curl -s http://webservertest
<html>
<body>
Hola desde el Webserver 2
</body>
</html>
[[email protected] named]#

Como podemos observar, aunque para el Apache del servidor con IP 10.0.0.2, la URL sigue dando servicio a través del Apache con IP 10.0.0.3.

Para conseguir esto, he configurado nuevas entradas en el DNS. Veámoslas:

  • Fichero /etc/named.conf:

# webservertest
zone «webservertest» IN {
type master;
file «forward.webservertest.db»;
allow-update { none; };
};

zone «reverse.webservertest» IN {
type master;
file «reverse.webservertest.db»;
allow-update { none; };
};

  • Fichero  /var/named/forward.webservertest.db:

$TTL 86400
@ IN SOA webservertest. root.webserver.local. (
2011071001 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)

@ IN NS webservertest.
@ IN NS webserevertest.
@ IN A 10.0.0.2
@ IN A 10.0.0.3
webservertest IN A 10.0.0.2
webservertest IN A 10.0.0.3

Vemos que el mismo nombre de servicio apunta a IPs distintas.

  • Fichero /var/named/reverse.webservertest.db:

$TTL 86400
@ IN SOA webservertest. root.webservertest. (
2011071001 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)

@ IN NS webservertest.
webservertest IN A 10.0.0.2
webservertest IN A 10.0.0.3
101 IN PTR webservertest.
102 IN PTR webservertest.

¿Te ha gustado? Compártelo

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email
About Author

Contenido Relacionado

Artículos Recientes

Deja un comentario