Servidor DNS. Forwarding DNS Server


DNS, o the Domain Name System, puede ser a menudo un concepto o más que un concepto un componente dentro del sistema difícil de configurar.

Unos prefieren utilizar las DNS de su proveedor o registrarse en un dominio del cual valerse.

No obstante hay ciertas ventajas a la hora de crear tu propio servidor DNS.

En esta primera guía instalaremos y configuraremos un servidos DNS utilizando El software Bind9. Vamos a realizarlo no como caché, sino como reenvío. Lo haremos sobre un Ubuntu server 14.04.

Así mismo configuraremos a un cliente para servirse del servidor.

 

Consideraciones previas.

Sería conveniente, que antes de anda, nos familiaricemos con la terminología DNS. Esta guía para aprender y familiarizarnos con los conceptos.

La siguiente práctica la haremos con dos ordenadores, uno como servidor (Ubuntu server 14.04 y otro como cliente.)

 

Rol

Ip Address

DNS Server

192.168.1.135

Client

192.168.1.136

 

Un servidor DNS de reenvío se verá casi idéntico a un servidor de almacenamiento en caché desde la perspectiva de un cliente, pero los mecanismos y la carga de trabajo son muy diferentes.

Un servidor DNS de reenvío ofrece la misma ventaja de mantener una memoria caché para mejorar los tiempos de resolución de DNS para los clientes. Sin embargo, en realidad no hace nada de la propia consulta recursiva. En su lugar, se remite todas las peticiones a un servidor de resolución de fuera y luego almacena en caché los resultados de usar para consultas posteriores.

Esto permite que el servidor responda desde su caché, mientras que no le obligue a hacer todo el trabajo de consultas recursivas. Esto permite que el servidor sólo se utilice para hacer peticiones individuales (la solicitud del cliente reenviado) en lugar de tener que pasar por toda la rutina de la recursividad o del proceso. Esto puede ser una ventaja en entornos en los que el ancho de banda de transferencia externa es costoso, donde podrían necesitar sus servidores de almacenamiento en caché que cambiar a menudo, o cuando se desea reenviar las consultas locales a un servidor y consultas externas a otro servidor.

Instalar Bind en el servidor DNS

Independientemente de la configuración de opción que desea utilizar, el primer paso en la implementación de un servidor DNS Bind es instalar el software.

El software Bind está disponible en los repositorios por defecto de Ubuntu, así que sólo hay que actualizar nuestro índice local de paquetes e instalar el software usando apt-get. También vamos a incluir la documentación y algunas utilidades comunes:

 

sudo apt-get update

 

sudo apt-get install bind9 bind9utils bind9-doc

 

Una vez instalados, podemos empezar a configurar el servidor. El servidor de reenvío utilizará la configuración del servidor de almacenamiento en caché como punto de salida, por lo que independientemente de su objetivo final, configuraremos el servidor como un servidor de almacenamiento en caché en primer lugar.

Configurar como servidor DNS de reenvío

Haremos la configuración más básica.

Vamos a comenzar con la configuración que lo dejamos en la configuración del servidor de almacenamiento en caché. El archivo  named.conf.options debe tener este aspecto:

acl goodclients {

192.168.1.136;

localhost;

localnets;

};

 

options {

directory “/var/cache/bind”;

 

recursion yes;

allow-query { goodclients; };

 

dnssec-validation auto;

 

auth-nxdomain no; # conform to RFC1035

listen-on-v6 { any; };

};

Nosotros vamos a usar la misma lista ACL para restringir nuestro servidor DNS para una lista específica de los clientes. Sin embargo, hemos de cambiar la configuración para que el servidor ya no intente realizar por sí mismo las consultas recursivas.

Para ello, nosotros dejaremos recursion a yes. El servidor de reenvío estaría proporcionando servicios recursivos para responder a las preguntas para las zonas que no tienen autoridad. En su lugar, tenemos que establecer una lista de servidores de almacenamiento en caché para enviar nuestras peticiones.

Esto se hará dentro de las options {}. En primer lugar, creamos un bloque dentro en donde pondremos nuestro servidor DNS. En nuestra guía, vamos a utilizar los servidores de DNS públicos de Google ( 8.8.8.8 y 8.8.4.4 ):

 

. . .

options {

directory “/var/cache/bind”;

 

recursion yes;

allow-query { goodclients; };

 

forwarders {

8.8.8.8;

8.8.4.4;

};

. . .

Después, debemos establecer forward  directiva a “only” desde este servidor reenviará todas las peticiones y no debería tratar de resolver sus propias peticiones.

El archivo de configuración se verá así :

acl goodclients {

192.168.1.136;


localhost;


localnets;

};

 

options {


directory “/var/cache/bind”;

 


recursion yes;


allow-query { goodclients; };

 


forwarders {


8.8.8.8;


8.8.4.4;


};


forward only;

 


dnssec-validation auto;

 


auth-nxdomain no; # conform to RFC1035


listen-on-v6 { any; };

};

 

 

Un cambio final que debemos hacer es en  DNSSEC .  Con la configuración actual, dependiendo de la configuración de los servidores DNS reenviados, es posible que vea algunos errores que se parecen a esto en los registros:

 

09 nov 15:03:29 caché con nombre [2512]: error (servidores DS persecución) resolver ‘in-addr.arpa/DS/IN’: 8.8.8.8 # 53

09-nov-15:03:29 caché con nombre [2512]: error (no válido DS) resolver ‘111.111.111.111.in-addr.arpa/PTR/IN’: 8.8.4.4 # 53

 

Para evitar esto, cambiamos l DNSSEC a yes y habilitamos explícitamente el dnssec:

 

. . .

forward only;

 

dnssec-enable yes;

dnssec-validation yes;

 

auth-nxdomain no; # conform to RFC1035

. . .

Guarde y cierre el archivo cuando hayamos terminado. 

Ahora ya tenemos el servido de reenvío DNS

Verificaciony reicion de Bind

Verificamos que todo funcione bien

sudo named-checkconf

Si no aparece ninguna líne o error, es que todo está correcto.

Si tiene errores de sintaxis en los archivos de configuración, mire al número de error y la línea donde se produce. Si esto ocurre, volver atrás y revisar sus archivos para errores.

Cuando haya comprobado que sus archivos de configuración no tienen errores de sintaxis, reinicie el servio de Bind para implementar los cambios:

sudo service bind9 restart

 

Podemos ver el registro del servidor en

sudo tail -f / var / log / syslog

 

Configure la máquina cliente

Ahora que tenemos en marcha el servidor, podemos configurar el equipo cliente para que utilice este servidor DNS para las consultas.

Inicie sesión en la máquina cliente. Asegúrese de que el cliente está utilizando se ha especificado en el grupo de ACL se establece para el servidor DNS. De lo contrario, el servidor DNS se negará a servir las solicitudes del cliente.

Tenemos que editar el /etc/resolv.conf  para señalar nuestro servidor para el servidor de nombres. Los cambios realizados aquí sólo durarán hasta el reinicio , lo cual es genial para la prueba. Si estamos satisfechos con los resultados de nuestras pruebas, podemos hacer estos cambios sean permanentes.

Abra el archivo con privilegios sudo en su editor de texto:

sudo nano /etc/resolv.conf

 

Dicho archivo lo dejaremos así.

nameserver 192.1.1.135

 

 

Guarde y cierre el archivo.

Ahora, usted podemos probar para asegurarse de que las consultas se pueden resolver correctamente mediante el uso de algunas herramientas comunes.

Usted puede usar de ping para probar que las conexiones se pueden hacer a los dominios:

 

ping -c 1 google.com

PING google.com (173.194.33.1) 56(84) bytes of data.

64 bytes from sea09s01-in-f1.1e100.net (173.194.33.1): icmp_seq=1 ttl=55 time=63.8 ms

 

— google.com ping statistics —

1 packets transmitted, 1 received, 0% packet loss, time 0ms

rtt min/avg/max/mdev = 63.807/63.807/63.807/0.000 ms

Esto significa que nuestro cliente puede conectarse con google.com usando nuestro servidor DNS.

Podemos obtener información más detallada mediante DNS con herramientas específicas como dig .

 Pruebe con un dominio diferente esta vez:

 

 

dig linuxfoundation.org

 

; <<>> DiG 9.9.5-3-Ubuntu <<>> linuxfoundation.org

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35417

;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

 

;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 4096

;; QUESTION SECTION:

;linuxfoundation.org.       IN  A

 

;; ANSWER SECTION:

linuxfoundation.org.    6017    IN  A   140.211.169.4

 

;; Query time: 36 msec
			

;; SERVER: 192.168.1.135#53(192.168.1.135)

;; WHEN: Sat Nov 09 15:45:57 EDT 2014

;; MSG SIZE  rcvd: 64

 

 

Se puede ver que la consulta tuvo 36 milisegundos. Si hacemos la petición de nuevo, el servidor debe darnos los datos de su caché, disminuyendo el tiempo de respuesta:

dig linuxfoundation.org

 

; <<>> DiG 9.9.5-3-Ubuntu <<>> linuxfoundation.org

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35417

;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

 

;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 4096

;; QUESTION SECTION:

;linuxfoundation.org.       IN  A

 

;; ANSWER SECTION:

linuxfoundation.org.    6017    IN  A   140.211.169.4

 

;; Query time: 1 msec
				

;; SERVER: 192.168.1.135#53(192.168.1.135)

;; WHEN: Sat Nov 09 15:49:34 EDT 2014

;; MSG SIZE  rcvd: 64

 

Como se puede ver, la respuesta en caché es mucho más rápido.

También podemos probar la búsqueda inversa utilizando la dirección IP que nos encontramos

 


 


 

Como se puede ver, la búsqueda inversa también tiene éxito.

De vuelta en su servidor DNS, debe ver si los errores se han registrado durante las pruebas. Un error común que puede presentarse es la siguiente:

. . .

nov 09 13:16:22 cache named[2004]: error (network unreachable) resolving ‘ns4.apnic.net/A/IN’: 2001:dc0:4001:1:0:1836:0:140#53

nov 09 13:16:22 cache named[2004]: error (network unreachable) resolving ‘ns4.apnic.com/A/IN’: 2001:503:a83e::2:30#53

nov 09 13:16:23 cache named[2004]: error (network unreachable) resolving ‘sns-pb.isc.org/AAAA/IN’: 2001:500:f::1#53

nov 09 13:16:23 cache named[2004]: error (network unreachable) resolving ‘ns3.nic.fr/A/IN’: 2a00:d78:0:102:193:176:144:22#53

 

Estos indican que el servidor está tratando de resolver la información de IPv6, pero que el servidor no está configurado para IPv6. Puede solucionar este problema obligando a que utilice IPv4.

Para ello, abrimos el archivo /etc/default /bind9 con privilegios sudo:

 

sudo nano / etc / default / bind9

En el interior, modificar el el parámetro option e incluimos -4 para
forzar s
ólo IPv4 :

 

OPTIONS=”-u bind -4″

 

Guarde y cierre el archivo.

Reinicie el servidor:

sudo service bind9 restart

 

 

  1. Haciendo los Ajustes DNS Permanente en el cliente

Como se mencionó antes, los ajustes  /etc/resolv.conf  que apunta la máquina cliente a nuestro servidor DNS se perderán después de un reinicio. Para hacer que los cambios sean permanentes, tenemos que modificar los archivos que se utilizan para generar este archivo.

Si el equipo cliente está ejecutando Debian o Ubuntu, abrimos archivo /etc/network/interfaces de archivos con privilegios sudo:

 

sudo nano /etc/network/interfaces

 

y configuramos nuestra tarjeta tal que asi

 

iface eth0 inet static

address 192.168.1.136

network 192.168.1.0

    netmask 255.255.255.0

    broadcast 192.168.1.255    

    gateway 192.168.1.1

dns-nameservers 192.168.1.136

Guarde y cierre el archivo cuando haya terminado. La próxima vez que arranque, se aplicará la configuración.

Conclusión

Ahora debe tener ya configurado su servidor de reenvio dns. Esto puede ser una forma de acelerar las consultas DNS para las máquinas que está gestionando.

Si desea crear un servidor DNS que tiene autoridad para sus propias zonas de dominio, puede configurar un sólo servidor DNS autoritativo o combinar estas soluciones.

Otra forma de hacer permanente los cambios sin tener que tocar el fichero interfaces es:

instalar el paquete resolvconf

sudo apt-get install resolvconf

Una vez instalado , editamos la configuración del archivo correspondiente y añadimos la dirección de nuestro servidor.

sudo gedit /etc/resolvconf/resolv.conf.d/base

y dentro

nameserver 192.168.1.135

Salvar y reiniciar

Acerca de Rafael Quintana

Con ganas de compartir y de aprender
Galería | Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s