Búsqueda de sitios web

Configurar el servidor DNS maestro-esclavo utilizando las herramientas "Bind" en RHEL/CentOS 6.5


Servidor de nombres de dominio (DNS) utilizado para resolver nombres en cualquier host. Los servidores DNS maestros (Servidor primario) son los manejadores de datos de zona originales y el servidor DNS esclavo (Servidor secundario) son solo servidores de respaldo que se utilizan para copiar la información de la misma zona desde los servidores maestros. Master Server resolverá los nombres de cada host que definimos en la base de datos de la zona y usará el protocolo UDP, porque los protocolos UDP nunca usan el proceso de reconocimiento mientras que TCP usa el reconocimiento. Los servidores DNS también utilizan protocolos UDP para resolver la solicitud de consulta lo antes posible.

¿Cómo funciona el DNS?

Comprender el DNS puede resultar un poco confuso para los principiantes. Aquí hay una breve explicación sobre cómo funciona el DNS.

Digamos, si necesitamos acceder a algún sitio web, ¿qué haremos? Simplemente escriba www.google.com en el navegador y presione Intro. Mmmm, eso es todo lo que sabemos, pero el hecho es que los DNS pasan por él mientras consultan por nosotros. Mientras escribimos www.google.com el sistema buscará www.google.com. Siempre que escribimos algún nombre de dominio, hay un . (punto) al final de www.google.com que dice buscar en el servidor raíz del espacio de nombres.

Globalmente hay 13 servidores raíz disponibles para resolver la consulta. Al principio, mientras pulsamos Intro como www.google.com, nuestro navegador pasará una solicitud a nuestro solucionador local, que tiene una entrada sobre la información de nuestro servidor DNS maestro y esclavo. Si no tienen información sobre dicha consulta solicitada, pasarán la solicitud al dominio de nivel superior (TLD), si el TLD dice que no conozco la solicitud, es posible que el servidor autorizado conozca su solicitud, se reenviará a servidores autorizados, aquí solo www.google.com se definió como dirección 72.36.15.56.

Mientras tanto, el servidor autorizado dará la respuesta al TLD y el TLD pasará al servidor raíz y la raíz proporcionará la información al navegador, por lo que el navegador almacenará en caché la solicitud de DNS para uso futuro. Por lo tanto, este largo proceso se resolverá en milisegundos. Si no conocen la solicitud, responderán como NXDOMAIN. Eso significa que no se encontró ningún registro en la base de datos de la Zona. Espero que esto te ayude a comprender cómo funciona el DNS.

Leer también: Configurar el servidor de caché DNS en Ubuntu

Mi entorno de prueba

Para este artículo, estoy usando 3 máquinas, 2 para la configuración del servidor (maestro y esclavo) y 1 para el cliente.

---------------------------------------------------
Master DNS Server
---------------------------------------------------

IP Address	:	192.168.0.200
Host-name	:	masterdns.tecmintlocal.com
OS		:	Centos 6.5 Final
---------------------------------------------------
Slave DNS Server
---------------------------------------------------

IP Address	:	192.168.0.201
Host-name	:	slavedns.tecmintlocal.com
OS		:	Centos 6.5 Final
---------------------------------------------------
Client Machine to use DNS
---------------------------------------------------

IP Address	:	192.168.0.210
Host-name	:	node1.tecmintlocal.com
OS		:	Centos 6.5 Final
Paquetes de requisitos
bind, bind-utils, bind-chroot
Archivos de configuración utilizados
config file	:	/etc/named.conf
script file	:	/etc/init.d/named
Puerto y protocolos utilizados
53, UDP

Configurar el servidor DNS maestro

Primero, verifique la dirección IP, el nombre de host y la versión de distribución del servidor DNS maestro antes de continuar con la configuración.

sudo ifconfig | grep inet
hostname
cat /etc/redhat-release

Una vez que confirme que la configuración anterior es correcta, es hora de seguir adelante para instalar los paquetes necesarios.

sudo yum install bind* -y

Instalación y configuración de Bind

Después de instalar los paquetes requeridos, ahora defina los archivos de zona en el archivo de configuración maestra 'named.conf'.

sudo vim /etc/named.conf

A continuación se muestra la entrada de mi archivo named.conf, cambie el archivo de configuración según sus necesidades.

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
        listen-on port 53 { 127.0.0.1; 192.168.0.200; }; # Here we need to add our Master DNS Server IP.
        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; 192.168.0.0/24; }; # subnet range where my hosts are allowed to query our DNS.
        allow-transfer     { localhost; 192.168.0.201; };  # Here we need to our Slave DNS server IP.
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

## Define our forward & reverse Zone file here for tecmintlocal.com.


zone"tecmintlocal.com" IN {
type master;
file "tecmintlocal.fwd.zone";
allow-update { none; };
};

zone"0.168.192.in-addr.arpa" IN {
type master;
file "tecmintlocal.rev.zone";
allow-update { none; };
};

#####
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

A continuación se muestra la explicación de cada configuración que utilizamos en el archivo anterior.

  1. puerto de escucha 53: se utiliza para que el DNS escuche en las interfaces disponibles.
  2. DNS maestro: defina su dirección IP de DNS maestro para escuchar la consulta.
  3. DNS esclavo: defina su DNS esclavo, que se utiliza para sincronizar la información de nuestra zona para resolver los hosts desde el maestro.
  4. recursión no: si se establece en sí, las consultas recursivas harán que el servidor sufra un ataque DDOS.
  5. Nombre de zona: defina aquí el nombre de su zona definido como tecminlocal.com.
  6. escriba maestro: como este sistema se configuró para un servidor maestro, para el próximo servidor esclavo será esclavo.
  7. tecmintlocal.fwd.zone: este archivo tiene la información del host para esta zona.
  8. allow-update none: si no se establece ninguno. no utilizará DNS dinámico (DDNS).

Crear archivos de zona maestra

Primero, definamos la entrada a la zona de búsqueda directa. Aquí necesitamos crear los archivos de zona con el nombre que hemos definido en el archivo named.conf como se muestra a continuación.

tecmintlocal.fwd.zone
tecmintlocal.rev.zone

Usamos archivos de configuración de muestra para crear archivos de zona directa, para esto tenemos que copiar los archivos de configuración de muestra.

sudo cp /var/named/named.localhost /var/named/tecmintlocal.fwd.zone
sudo cp /var/named/named.loopback /var/named/tecmintlocal.rev.zone

Una vez que haya copiado los archivos de configuración, ahora edite estos archivos de zonas usando el editor vim.

sudo vim /var/named/tecmintlocal.fwd.zone

Antes de definir nuestra información de host en el archivo de zona de reenvío, primero eche un vistazo rápido al archivo de zona de muestra.

Esta es mi configuración de zona de avance, agregue la siguiente entrada y realice los cambios según sus necesidades.

$TTL 86400
@       IN SOA  masterdns.tecmintlocal.com.     root.tecmintlocal.com. (
                                  2014090401    ; serial
                                        3600    ; refresh
                                        1800    ; retry
                                      604800    ; expire
                                       86400 )  ; minimum

; Name server's

@       IN      NS      masterdns.tecmintlocal.com.
@       IN      NS      slavedns.tecmintlocal.com.

; Name server hostname to IP resolve.

@       IN      A       192.168.0.200
@       IN      A       192.168.0.201

; Hosts in this Domain

@       IN      A       192.168.0.210
@       IN      A       192.168.0.220
masterdns       IN      A       192.168.0.200
slavedns        IN      A       192.168.0.201
node1           IN      A       192.168.0.210
rhel1           IN      A       192.168.0.220

Guarde y cierre el archivo usando wq!. Después de editar la búsqueda directa, se ve como se muestra a continuación: Utilice TAB para obtener un formato decente en el archivo de zona.

Ahora, cree un archivo de búsqueda inversa. Ya hemos hecho una copia del archivo de bucle invertido con el nombre de tecmintlocal.rev.zone. Entonces, usamos este archivo para configurar nuestra búsqueda inversa.

sudo vim /var/named/tecmintlocal.rev.zone

Antes de definir nuestra información de host en el archivo de zona inversa, eche un vistazo rápido al archivo de búsqueda inversa de muestra como se muestra a continuación.

Esta es mi configuración de zona inversa, agregue la siguiente entrada y realice los cambios que necesite.

$TTL 86400
@       IN SOA  masterdns.tecmintlocal.com. root.tecmintlocal.com. (
                                2014090402      ; serial
                                      3600      ; refresh
                                      1800      ; retry
                                    604800      ; expire
                                     86400 )    ; minimum

; Name server's

@       IN      NS      masterdns.tecmintlocal.com.
@       IN      NS      slavedns.tecmintlocal.com.
@       IN      PTR     tecmintlocal.com.

; Name server hostname to IP resolve.

masterdns       IN      A       192.168.0.200
slavedns        IN      A       192.168.0.201

;Hosts in Domain 

node1           IN      A       192.168.0.210
rhel            IN      A       192.168.0.220
200             IN      PTR     masterdns.tecmintlocal.com.
201             IN      PTR     slavedns.tecmintlocal.com.
210             IN      PTR     node1.tecmintlocal.com.
220             IN      PTR     rhel1.tecmintlocal.com.

Guarde y cierre el archivo usando wq!. Después de editar la búsqueda inversa, se ve como se muestra a continuación: Utilice TAB para obtener un formato decente en el archivo de zona.

Verifique la propiedad del grupo de los archivos de búsqueda directa e inversa antes de verificar si hay errores en la configuración.

sudo ls -l /var/named/

Aquí podemos ver que ambos archivos son propiedad de los usuarios root, porque los archivos que copiamos de los archivos de muestra están disponibles en /var/named/. Cambie el grupo a nombrado en ambos archivos usando los siguientes comandos.

sudo chgrp named /var/named/tecmintlocal.fwd.zone
sudo chgrp named /var/named/tecmintlocal.rev.zone

Después de configurar la propiedad correcta de los archivos, verifíquelos nuevamente.

sudo ls -l /var/named/

Ahora, verifique los errores en los archivos de zona, antes de iniciar el servicio DNS. Primero verifique el archivo named.conf y luego verifique otros archivos de zona.

sudo named-checkconf /etc/named.conf
sudo named-checkzone masterdns.tecminlocal.com /var/named/tecmintlocal.fwd.zone
sudo named-checkzone masterdns.tecminlocal.com /var/named/tecmintlocal.rev.zone

De forma predeterminada, iptables se estaba ejecutando y nuestro servidor DNS está restringido a localhost, si el cliente desea resolver el nombre de nuestro servidor DNS, entonces debemos permitir la solicitud entrante, para eso necesitamos agregar la regla de entrada de iptables para el puerto 53.

sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Ahora, verifica que las reglas se hayan agregado correctamente en la cadena INPUT.

sudo iptables -L INPUT

A continuación, guarde las reglas y reinicie el firewall.

sudo service iptables save
sudo service iptables restart

Inicie el servicio nombrado y hágalo persistente.

sudo service named start
sudo chkconfig named on
sudo chkconfig --list named

Finalmente, pruebe los archivos de zona Master DNS configurados (hacia adelante y hacia atrás), usando las herramientas dig & nslookup.

dig masterdns.tecmintlocal.com		[Forward Zone]

dig -x 192.168.0.200

nslookup tecmintlocal.com
nslookup masterdns.tecmintlocal.com
nslookup slavedns.tecmintlocal.com

¡Fresco! Hemos configurado un DNS maestro, ahora necesitamos configurar un servidor DNS esclavo. Avancemos para configurar un servidor esclavo. Esto no llevará mucho tiempo como configuración maestra.

Configurar el servidor DNS esclavo

En la máquina Esclavo, también necesitamos instalar los mismos paquetes de enlace que se muestran en Maestro, así que instalémoslos usando el siguiente comando.

sudo yum install bind* -y

Abra y edite el archivo 'named.conf' para nuestra base de datos de zona y escucha de puerto.

sudo vim /etc/named.conf

Realice los cambios como se muestra, según sus requisitos.

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
        listen-on port 53 { 127.0.0.1; 192.168.0.201}; # Our Slave DNS server IP
        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; 192.168.0.0/24; };
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

## Define our slave forward and reverse zone, Zone files are replicated from master.

zone"tecmintlocal.com" IN {
type slave;
file "slaves/tecmintlocal.fwd.zone";
masters { 192.168.0.200; };
};

zone"0.168.192.in-addr.arpa" IN {
type slave;
file "slaves/tecmintlocal.rev.zone";
masters { 192.168.0.200; };
};

#####
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

Inicie el servicio DNS usando.

sudo service named start

Después de reiniciar el servicio de enlace, no tenemos que definir la información de la zona individualmente, ya que nuestro permitir transferencia replicará la información de la zona del servidor maestro como se muestra en la imagen a continuación.

sudo ls -l /var/named/slaves

Verifique la información de la zona usando el comando cat.

sudo cat /var/named/slaves/tecmintlocal.fwd.zone
sudo cat /var/named/slaves/tecmintlocal.rev.zone

A continuación, abra el puerto DNS 53 en iptables para permitir la conexión entrante.

sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Guarde las reglas de iptables y reinicie el servicio de iptables.

sudo service iptables save
sudo service iptables restart

Haga que el servicio sea persistente al iniciar el sistema.

sudo chkconfig iptables on
Check whether persistent set for run-levels .
sudo chkconfig --list iptables

¡Eso es todo!. Ahora es el momento de configurar nuestras máquinas cliente y verificar el nombre de host.

Configurar la máquina cliente

En el lado del cliente, debemos asignar la entrada DNS principal (192.168.0.200) y secundaria (192.168.0.201) en la configuración de red para asignar un nombre de host. Para hacerlo, ejecute el comando de configuración para definir todas estas entradas como se muestra en la imagen.

setup

De lo contrario, edite el archivo '/etc/reslov.conf' y agregue las siguientes entradas.

vim /etc/resolv.conf
search tecmintlocal.com
nameserver 192.168.0.200
nameserver 192.168.0.201

Ahora, verifique la búsqueda de IP, nombre de host y servidor de nombres.

ifconfig | grep inet
hostname
nslookup tecmintlocal.com

Ahora, verifique la búsqueda de DNS directa e inversa usando.

dig masterdns.tecmintlocal.com
dig -x 192.168.0.200

Entendiendo la excavación Salida:

  1. Encabezado – Aquí dice todo lo que hemos pedido y cómo quedó el resultado.
  2. Estado: el estado fue SIN ERROR, eso significa que la solicitud de consulta enviada por nosotros fue exitosa sin ningún ERROR.
  3. Pregunta – La consulta que hicimos nosotros, aquí mi consulta fue masterdns.tecmintlocal.com.
  4. Respuesta: la solicitud de consulta se resuelve si hay información disponible.
  5. Autoridad: la respuesta de los servidores de nombres para el dominio y la zona.
  6. Adicional: información adicional sobre servidores de nombres, como el nombre de host y la dirección IP.
  7. Tiempo de consulta: cuánto tiempo llevó resolver los nombres de los servidores anteriores.

Finalmente busca nuestro nodo y haz un ping.

dig node1.tecmintlocal.com

ping masterdns.tecmintlocal.com -c 2
ping slavedns.tecmintlocal.com -c 2
ping 192.168.0.200 -c 2
ping 192.168.0.201 -c 2

Finalmente, se completó la configuración, aquí hemos configurado exitosamente el servidor DNS primario (maestro) y esclavo (secundario), espero que todos hayan configurado sin ningún problema, no dude en dejar un comentario si tiene algún problema durante la configuración.