Servidor ubuntu completo - VIII parte - Servidor DNS


Todo lo que hemos estado viendo hasta ahora ha estado muy divertido, pero ahora llega el verdadero enemigo, el server más complicado de todos (o por lo menos para mi) su nombre son 3 letras que imparten terror entre los estudiantes de informática, su nombre es... ¡DNS!
Este es el verdadero enemigo a batir, ya que si este falla, muchas de las cosas que haremos más adelante, darán fallos en algunas zonas y no sabrás el que falla y te entraran ganas de sacarte los ojos, por lo tanto poner mucha atención y si es necesario leeros lo varias veces si no lo habéis entendido bien porque repito que esto es muy importante.



Un servidor DNS es una máquina que resuelve nombres DNS dentro de una red. Un nombre DNS es una cadena de palabras que representa una dirección IP. Por ejemplo, www.google.com es un nombre DNS que hace referencia a la dirección IP 74.125.230.80. El servidor tiene una lista de nombres DNS asociados a una dirección IP, y si se le da un nombre DNS que está en su lista, el servidor devuelve la dirección IP correspondiente; es a esto a lo que se le llama "resolver el nombre DNS".
Cuando un usuario introduce un nombre DNS en un navegador de Internet, su ordenador envía una petición al servidor DNS para que resuelva dicho nombre. El servidor le devuelve la dirección IP correspondiente, pudiendo establecer así la conexión.
He aquí un ejemplo de cómo funciona explicado en cinco pasos:
-El usuario introduce el nombre DNS www.google.com en el navegador de Internet.
-El ordenador cliente envía una petición al servidor DNS para que resuelva el nombre DNS www.google.com.
-El servidor DNS busca www.google.com en su lista de nombres. Si lo encuentra, envía al ordenador cliente la dirección IP. Si no, reenvía la petición al siguiente servidor DNS (forwarder).
-El servidor DNS encuentra el nombre www.google.com asociado a la dirección IP 74.125.230.80, y lo envía al ordenador cliente.
-El ordenador cliente realiza la conexión con el ordenador con la dirección IP 74.125.230.80.
Un detalle importante es que un nombre DNS está compuesto por dos partes: un nombre de nodo y un nombre de dominio. En este ejemplo, por ejemplo, aparecen diferenciados el nombre de nodo (azul) y el nombre de dominio (verde):
www.google.com
El nombre de nodo hace referencia a un ordenador que está dentro de un grupo de ordenadores, representado por el nombre de dominio (zona DNS). Por lo general, los nodos que en un sitio web tienen funciones específicas tienen un nombre especial que se utiliza en todos los dominios. En este caso, el nombre de nodo www se utiliza para nombrar el nodo que actúa como servidor Web, es decir, el que aloja las páginas web del sitio. 
 
Antes de empezar a instalar y configurar el servidor, es importante que conozca los tipos de servidores DNS y los tipos de registros. 

Existen cuatro tipos de servidores DNS: Master (Maestro o primario), Slave(Esclavo o secundario), Caching-only(Sólo caché) y Forwarding (De reenvío). Los servidores maestros son los principales; contienen los nombres DNS y responden a las peticiones de resolución; los esclavos también responden a las peticiones, pero no tienen información de los nombres DNS: sólo actúan como extensiones de los servidores maestros, por así decirlo, para que éstos puedan abarcar un mayor espacio y atender a más equipos. Los servidores de caché son como los maestros, pero en lugar de tener una base de datos permanente de los nombres DNS, lo que hace es registrar las últimas peticiones de resolución hechas a un servidor maestro y almacenarlas temporalmente, acelerando de esa forma el proceso de resolución de nombre DNS (cuando visita una página por segunda vez antes de que el servidor DNS caché borre su base de datos, es éste servidor y no el maestro quien resuelve la petición de resolución). Por último, los servidores de reenvío (valga la redundancia), reenvían las peticiones de resolución a otro servidor DNS (entre dos servidores del mismo tipo).

Servidor DNS maestro

 

Servidor DNS esclavo

 

 


Servidor caché DNS

 


 

Archivos de configuración del DNS

El archivo de configuración del DNS es el archivo /etc/bind/named.conf, pero este hace referencia a otros cuantos archivos como por ejemplo:

  • Archivo named.conf ; Archivo principal de configuración.
  • Archivo named.conf.options ; Opciones genéricas.
  • Archivo named.conf.local ; Especificación particula de este servidor DNS.
  • Archivo db.127 Especificación dirección de retorno.
  • Archivo db.root DNSs de nivel superior.

Configuración como caché DNS

Por defecto, al instalar el bind9 está preconfigurado como servidor caché DNS. Tan solo será necesario editar el archivo /etc/bind/named.conf.options y en la sección forwarders añadir las IPs de dos servidores DNS donde redirigir las peticiones DNS:

                         //Configuración como caché DNS
                         //Añadir IPs de los DNS de nuestro proveedor en /etc/named.conf.options
                         options{
                            forwarders {
                                  8.8.8.8; 8.8.4.4;
                            };
                          };

Configuración DNS maestro

Por razones de accesibilidad y organizativas, deseamos asignar un nombre a todos los equipos de nuestra red, para lo que instalaremos un servidor DNS privado con un dominio ficticio, por ejemplo 'shusui.com'. Todos los PCs de nuestra red pertenecerán a dicho dominio ficticio que funcionará solo en nuestra red interna, no en Internet. En tal caso el nombre completo de los PCs terminará con 'shusui.com', por ejemplo: habi1Pc2.shusui.com. Lo ideal en una situación así es disponer de un servidor DNS que sea maestro de nuestro dominio, es decir, maestro del dominio interno 'shusui.com'. 

Nuestro servidor DNS maestro para nuestro dominio ficticio interno 'shusui.com' será capaz de resolver peticiones internas de nombres de este dominio, tanto de forma directa como de forma inversa, es decir, si recibe una consulta acerca de quién es habi1pc2.shusui.com deberá devolver su IP, pongamos por ejemplo 192.168.1.107. Si la consulta es una consulta DNS inversa acerca de quién es 192.168.1.107, deberá responder habi1pc2.shusui.com. Por ello deberemos añadir en el archivo /etc/bind/named.conf.local la especificación de maestro para el dominio y para la resolución inversa, por ejemplo: 

               // Añadir en /etc/bind/named.conf.local
               // Archivo para búsquedas directas
               zone "shusui.com" {
                type master;
                file "/etc/bind/shusui.db";
              };

               //Archivo para búsquedas inversas
                 zone "1.168.192.in-addr.arpa"{
                  type master;
                  file "/etc/bind/192.rev";
               };

Evidentemente será necesario crear los archivos shusui.db y 192.rev que especificarán la asociación entre nombres y direcciones IP de nuestra red en un sentido y otro respectivamente.


Archivo de zona de búsqueda directa

Supongamos que en nuestra red local tenemos una habitación llamada habi1 con 12 PCs con IPs que van desde la 192.168.1.101 hasta 112 y cuyos nombres van desde habi1pc1 hasta habi1pc10, luego un servidor web (pc11) y un servidor de correo electrónico que además es servidor DNS (pc12). El archivo de configuración DNS de nuestro dominio podría ser así:

 // Archivo /etc/bind/shusui.db
;
; BIND data file for shusui.com
;
@ IN SOA shusui.com. root.shusui.com. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Default TTL

@ IN NS dns.shusui.com.
@ MX 10 mail.shusui.com.

habi1pc1 IN A 192.168.1.101
habi1pc2 IN A 192.168.1.102
habi2pc3 IN A 192.168.1.103
habi3pc4 IN A 192.168.1.104
habi4pc5 IN A 192.168.1.105
habi5pc6 IN A 192.168.1.106
habi6pc7 IN A 192.168.1.107
habi7pc8 IN A 192.168.1.108
habi8pc9 IN A 192.168.1.109
habi9pc10 IN A 192.168.1.110
www IN A 192.168.1.111
dns IN A 192.168.1.112
mail IN A 192.168.1.112

Las primeras líneas son unos parámetros relaccionados con la actualización del DNS (número de serie y periodos de actuación). Las dos siguientes líneas indican quién es el servidor primario (NS = Name server) y quien procesa el correo electronico del dominio (MX = Mail eXchange). Las siguientes líneas especifican las IPs de los distintos PCs componentes del dominio (A = Address).

Si olvidamos algún punto y coma, dará errores y no funcionará correctamente. Para revisar los archivos disponemos de los comandos named-checkconf y anmed-checkzone que analizan que esté correcta la sintaxis de los mismos. Recomiendo usar el archivo db.local ya que tiene una plantilla.

Archivo de zona de búsqueda inversa

Para poder realizar consultas inversas (de IP a nombre) será necesario crear el siguiente archivo:

// Archivo /etc/bind/192.rev
;
; BIND reverse data file for 192.168.1.0
;
@ IN SOA shusui.com. root.shusui.com. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Default TTL

IN NS dns.shusui.com.

101 IN PTR habi1pc1.shusui.com.
102 IN PTR habi1pc2.shusui.com.
103 IN PTR habi1pc3.shusui.com.
104 IN PTR habi1pc4.shusui.com.
105 IN PTR habi1pc5.shusui.com.
106 IN PTR habi1pc6.shusui.com.
107 IN PTR habi1pc7.shusui.com.
108 IN PTR habi1pc8.shusui.com.
109 IN PTR habi1pc9.shusui.com.
110 IN PTR habi1pc10.shusui.com.
111 IN PTR www.shusui.com.
112 IN PTR dns.shusui.com.
112 IN PTR mail.shusui.com. 

Una vez configurado nuestro servidor DNS, debemos indicar a nuestro servidor Linux que el servidor DNS es él mismo, lo cual se especifica en el archivo /etc/resolv.conf. 

nameserver 127.0.0.1
search shusui.com

En el resto de PCs de la red, indicaremos que el servidor DNS es 192.168.0.112 

Tan solo nos faltará poner en marcha nuestro servidor de nombres ejecutando en el servidor el script de inicio correspondiente: 

 /etc/init.d/bind9 restart

y, mediante el comando host, el comando dig o el comando nslookup hacer alguna consulta de prueba:


DNS funcionando correctamente.

 

Configuración DNS esclavo

 
Si deseamos configurar nuestro servidor DNS para que actúe como esclavo de un servidor DNS maestro, la configuración es mucho más sencilla que en el caso anterior ya que únicamente será necesario indicar en el DNS esclavo quién es el servidor DNS maestro, y en el DNS maestro, la IP del DNS esclavo. 

Ejemplo, supongamos que el nombre del DNS maestro es dns.shusui.com (IP 192.168.1.112) y que el nombre del DNS esclavo es dns2.shusui.com. En el archivo 'shusui.db' de zona de búsqueda directa añadiremos la línea del segundo dns justo debajo de donde está la del primero: 

 // Añadir línea en /etc/bind/shusui.db del maestro.

@ IN NS dns.shusui.com.
@ IN NS dns2.shusui.com. // Nueva línea

En el archivo /etc/bind/named.conf.local del servidor DNS esclavo debemos indicar que se trata de un servidor esclavo y también debemos indicar quién es el maestro:  

// Añadir en /etc/bind/named.conf.local del esclavo
zone "shusui.com" {
type slave;
file "/etc/bind/shusui.db";
masters { 192.168.1.112; };
};

zone "1.168.192.in-addr.arpa" {
type slave;
file "/etc/bind/192.rev";
masters { 192.168.1.112; };
};

En el archivo /etc/bind/named.conf.local del servidor DNS maestro podemos utilizar also-notify para mantener los DNS sincronizados. Con also-notify pasamos los cambios de zonas en el maestro al esclavo: 

 // Archivo /etc/bind/named.conf.local del maestro
zone "shusui.com" {
type master;
file "/etc/bind/shusui.db";
also-notify {ip_del_esclavo;}
};

zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/192.rev";
also-notify {ip_del_esclavo;}
};

De esta forma dispondremos en la red de un servidor DNS esclavo que podrá satisfacer las peticiones DNS al igual que lo haría el maestro. Es interesante si el número de peticiones es muy elevado y se requiere distribuir la carga entre los dos servidores, o si deseamos disponer de servicio DNS de alta disponibilidad de forma que aunque el servidor maestro deje de funcionar, el servidor esclavo podrá seguir ofreciendo el servicio.

Cada vez que hagamos un cambio en los archivos /etc/bind/shusui.db y /etc/bind/192.rev del maestro, debemos acordarnos de actualizar el parámetro serial (incrementar en una unidad) para que los dns dependientes del maestro sepan que ha cambiado y actualicen su información para mantenerse perfectamente sincronizados.

No hay comentarios:

Publicar un comentario