Instalar DNS BIND9 en Ubuntu 15.10

Introducción

Servidor de DNS BIND9 en Ubuntu 15.10

Instrucciones para instalar el servidor DNS BIND9 usando el instalador de Debian / Ubuntu. Los metas específicos a lograr con este articulo son los siguientes:

  • Instalar y configurar un DNS local como servidor maestro.
  • Establecer un dominio llamado “midns.com”.

¿Qué es un servidor DNS?

Un servidor DNS (Domain Name System – Sistema de nombres de dominio) es un servidor que traduce nombres de dominio a IPs y viceversa. En las redes TCP/IP, cada PC dispone de una dirección IP para poder comunicarse con el resto de PCs. Es equivalente a las redes de telefonía en las que cada teléfono dispone de un número de teléfono que le identifica y le permite comunicarse con el resto de teléfonos.

Servidor DNS maestro principal

Un servidor DNS maestro principal se puede usar para servir registros DNS (grupos de registros los cuales se denominan zonas) para un nombre de dominio registrado o uno imaginario (pero sólo si se utiliza en una red restringida).

¿Qué es BIND9?

Berkeley Internet Domain Name - BIND

Berkeley Internet Domain Name – BIND

BIND (Del Ingles Berkeley Internet Name Domain) es el servidor de DNS más comúnmente usado en Internet, especialmente en sistemas Unix, en los cuales es un Estándar de facto. Es comúnmente usado en sistemas GNU/Linux.

Instalación

Debe actualizar el sistema, con el siguiente comando:

$ sudo apt-get update && sudo apt-get upgrade

Para instalar el servidor DNS BIND9, ejecute el siguiente comando:

$ sudo apt-get install bind9 bind9-doc dnsutils

Configuración

BIND9 puede proporcionar muchos diferentes servicios de DNS. Algunas de los ambientes de configuraciones más útiles son:

  • Servidor de caché.
  • Servidor maestro principal.
  • Servidor maestro secundario.
  • Híbridos (DNS de Caching y Primary Master).
  • Servidores Stealth.

Archivos de configuración del BIND9

El archivo principal de configuración del DNS se encuentra en la ruta /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 particular de este servidor DNS.
  • Archivo db.127: Especificación dirección de retorno.
  • Archivo db.root: DNSs de nivel superior.
  • Otros archivos: db.0, db.255, db.empty, db.local, rndc.conf, rndc.key, zones.rfc1918.

Gestión del servicio BIND9

BIND9 al instalarse se gestiona como un servicio o demonio de Unix/Linux, para conocer los diversos parámetros de gestión para el servicio BIND9, ejecute el siguiente comando:

$ sudo service bind9 
 * Usage: /etc/init.d/bind9 {start|stop|reload|restart|force-reload|status}

Estatus del servicio BIND9

Para conocer el estatus del servicio para el servidor BIND9, ejecute el siguiente comando:

$ sudo service bind9 status
 bind9.service - BIND Domain Name Server
   Loaded: loaded (/lib/systemd/system/bind9.service; enabled; 
           vendor preset: enabled)
  Drop-In: /run/systemd/generator/bind9.service.d
           └─50-insserv.conf-$named.conf
   Active: active (running) since dom 2017-07-09 08:56:58 VET; 2h 8min ago
     Docs: man:named(8)
  Process: 7335 ExecStop=/usr/sbin/rndc stop (code=exited, status=0/SUCCESS)
 Main PID: 7340 (named)
   CGroup: /system.slice/bind9.service
           └─7340 /usr/sbin/named -f -u bind

jul 05 16:52:10 servidor systemd[1]: Starting LSB: Start odoo 
daemon at boot time...
jul 05 16:52:10 servidor odoo[630]: Starting odoo: ok
jul 05 16:52:14 servidor systemd[1]: Started LSB: Start odoo daemon 
at boot time.

Otra forma, de verificar Si el servicio BIND9 esta en funcionamiento, se realiza ejecutando el siguiente comando:

$ sudo ps aux | grep named
bind 7340  0.0  0.4 83660  9456 ? Ssl 08:56 0:00 /usr/sbin/named -f -u bind

Detener el servicio de BIND9

Para detener el servicio para el servidor BIND9, ejecute el siguiente comando:

$ sudo service bind9 stop

Iniciar el servicio de BIND9

Para iniciar el servicio para el servidor BIND9, ejecute el siguiente comando:

$ sudo service bind9 start

Reiniciar el servicio de BIND9

Para reiniciar el servicio para el servidor BIND9, ejecute el siguiente comando:

$ sudo service bind9 restart

Forzar la recargar de configuración del servicio de BIND9

Para forzar la recargar de la configuración del servicio BIND9, ejecute el siguiente comando:

$ sudo service bind9 force-reload

Registro de eventos (Archivo log)

Para depurar posibles errores del servicio BIND9, puede consultar el archivo log, con el siguiente comando:

$ sudo tail -f /var/log/named/named.log

Servidor DNS maestro con BIND9

La configuración básica para un servidor maestro usando BIND9, consta en definir lo siguiente:

  1. Zonas de búsquedas “directas” e “inversas”.
  2. Resolución de nombres.

Zonas DNS

Las zonas pueden declararse en el archivo named.conf.local, para hacer esto debe ejecutar con el siguiente comando:

$ sudo nano /etc/bind/named.conf.local

Entonces agregue las siguientes configuraciones:

// Archivo para búsquedas directas, es la definición de zona
// Remplace midns.com con su nombre de dominio
zone    "midns.com" {
        type master;
        file "/etc/bind/db.midns.com";
};

// Archivo para búsquedas inversas, es la definición de zona
// para el DNS reverso. Remplace 0.168.192 con su dirección
// IP en notación reverso - e.j. mi dirección de red es 192.168.0
zone    "0.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.192";
};

Seguidamente, pruebe la configuración ingresada, en búsqueda de no contener errores, ejecute el siguiente comando:

$ sudo named-checkconf

Consejo: El comando “named-checkconf” analiza que la sintaxis de la configuración sea correcta. Esto es importante debido a si al transcribir esta configuración previa se le olvida algún “punto y coma”, dará errores y no funcionará BIND9 correctamente.

Resolución de nombres

La resolución de nombres convierte los nombres de los sistemas en sus correspondientes direcciones IP. Estos debe declararse en el archivo named.conf.options, para hacer esto debe ejecutar el siguiente comando:

$ sudo nano /etc/bind/named.conf.options

Entonces agregue la siguiente configuración:

        forwarders {
              # Remplace con la IP de su servidor DNS actual
              192.168.0.1;
        };

Consejo: Para detectar el DNS actual de su conexión a red, ejecute el siguiente comando:

$ nmcli device show | grep IP4.DNS

Adicionalmente, usted debe agregar la IP del servidor DNS en la directiva “listen-on” en el archivo named.conf.options, para hacer esto debe ejecutar el siguiente comando:

$ sudo nano /etc/bind/named.conf.options

Entonces agregue la siguiente configuración:

        listen-on port 53 { 127.0.0.1; 192.168.0.100; };
        listen-on-v6 { any; };

De nuevo vuelva probar que la configuración ingresada no contenga errores, ejecute el siguiente comando:

$ sudo named-checkconf

Consejo: El comando “named-checkconf” analiza que la sintaxis de la configuración sea correcta. Esto es importante debido a si al transcribir esta configuración previa se le olvida algún “punto y coma”, dará errores y no funcionará BIND9 correctamente.

Zona de Búsqueda Directa

Las resoluciones de esta zona devuelven la dirección IP correspondiente al recurso solicitado. Realiza las resoluciones que esperan como respuesta la dirección IP de un determinado recurso.

Base de datos de búsqueda directa

Supongamos que en nuestra red local tenemos un departamento llamado reservaciones con 10 PCs con IPs que van desde la 192.168.0.100 hasta 192.168.0.110 y cuyos nombres van desde reserva1 hasta reserva10, luego un servidor Web que además es servidor DNS (servidor). Entonces la base de datos para búsquedas directas describe cada nombre de las PCs a su dirección IP asignada.

En este caso hipotético, la base de datos para búsquedas directas en la zona “midns.com” se debe guardar en el archivo “db.midns.com”, este debe crearse manualmente.

Para crear el archivo “db.midns.com”, ejecute el siguiente comando:

$ sudo cp /etc/bind/db.local /etc/bind/db.midns.com

Edite el archivo “db.midns.com”, ejecute el siguiente comando:

$ sudo nano /etc/bind/db.midns.com

Entonces agregue las siguientes configuraciones:

;
; BIND zone file for midns.com
;

$TTL    3D
@       IN      SOA     ns.midns.com.     root.midns.com. (
                        2010111101      ; serial
                        8H              ; refresh
                        2H              ; retry
                        4W              ; expire
                        1D )            ; minimum
;
                NS      ns              ; Inet address of name server

ns              A       192.168.0.100

midns.com.       A       192.168.0.100
server         A        192.168.0.100

virtual         A        192.168.0.100

router          A       192.168.0.1     ; router ADSL
gateway         CNAME   router
gw              CNAME   router
proxy           CNAME   server
www             CNAME   virtual

Las primeras líneas son unos parámetros relacionados 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). Las siguientes líneas especifican las IPs de los distintos PCs componentes del dominio (A = Address). Adicionalmente las ultimas lineas son registros que mapean como un alias de un nombre a otro nombre usando (CNAME = Canonical Name) sólo se debe utilizar cuando no hay otros registros en ese nombre.

Puede verificar el fichero de configuración de la zona “midns.com” no contenga errores:

$ sudo named-checkzone midns.com /etc/bind/db.midns.com

La verificación se realiza por que si olvida algún punto y coma, dará errores y no funcionará correctamente. Este comando analizara que esté correcta la sintaxis del mismo.

Zona de Búsqueda Inversa

Las resoluciones de esta zona buscan un nombre de equipo en función de su dirección IP; una búsqueda inversa tiene forma de pregunta, del estilo “¿Cuál es el nombre DNS del equipo que utiliza la dirección IP 192.168.0.100?”.

Base de datos de búsqueda inversa

La base de datos para las búsquedas inversas en la zona “0.168.192.in-addr.arpa” se debe guardar en el archivo “db.192”, este debe crearse manualmente.

Para crear el archivo “db.192”, ejecute el siguiente comando:

$ sudo cp /etc/bind/db.127 /etc/bind/db.192

Edite el archivo “db.192”, ejecute el siguiente comando:

$ sudo nano /etc/bind/db.192

Entonces agregue las siguientes configuraciones:

;
; BIND zone file for 192.168.0.xxx
;

$TTL    3D
@       IN      SOA     ns.midns.com.    root.midns.com. (
                        2010111101      ; serial
                        8H              ; refresh
                        2H              ; retry
                        4W              ; expire
                        1D )            ; minimum
;
                NS      ns.midns.com.   ; Nameserver address

100             PTR     server.midns.com.
100             PTR     ns.midns.com.
100             PTR     www.midns.com.
100             PTR     virtual.midns.com.
1               PTR     router.midns.com.

Puede verificar el fichero de configuración de la zona “0.168.192.in-addr.arpa” no contenga errores:

$ sudo named-checkzone 0.168.192.in-addr.arpa /etc/bind/db.192

La verificación se realiza por que si olvida algún punto y coma, dará errores y no funcionará correctamente. Este comando analizara que esté correcta la sintaxis del mismo.

Configuraciones de red para DNS local

Adicionalmente, usted debe agregar configuraciones de red para el servidor DNS local, primero debe agregar el dominio “midns.com” y la dirección IP del servidor DNS en el archivo /etc/resolv.conf, con el siguiente comando:

$ sudo nano /etc/resolv.conf

Entonces agregue la siguiente configuración:

domain midns.com
search midns.com
nameserver 192.168.0.100
nameserver 127.0.0.1

Agregar a su archivo /etc/hosts el dominio “midns.com”, con el siguiente comando:

$ sudo nano /etc/hosts

Entonces agregue la siguiente configuración:

127.0.0.1 midns.com

Aplicar cambios de configuración

Luego de aplicar las configuraciones anteriores, de aplicar los cambios hechos en la configuración actual del servicio BIND9, para lograr esto ejecute el siguiente comando:

$ sudo service bind9 restart

Asi de esta forma ya tiene :

  • El servidor BIND9 correctamente configurado.
  • Definidas las zonas de búsqueda “directas” e “inversas”.
  • Aplicadas configuraciones de red para el DNS local.

Funcionamiento del servidor DNS

Para comprar el funcionamiento correcto del DNS previamente configurado, usted ha instalado previamente unas utilidades las cuales se describen a continuación:

Utilidades dnsutils

Al instalar el paquete dnsutils usted dispone dos (02) nuevas utilidades las cuales se describen a continuación:

Herramienta “dig”

Es una utilidad de búsqueda de DNS, dig significa en Ingles (domain information groper), esta es una herramienta flexible para interrogar servidores de nombres DNS. Realiza búsquedas de DNS y muestra las respuestas que se devuelven desde el servidor de nombres que se consultó. La mayoría de los administradores de DNS utilizan dig para solucionar problemas de DNS debido a su flexibilidad, facilidad de uso y claridad de salida.

Para comprobar el dominio “www.midns.com” del DNS usando la herramienta “dig”, ejecute el siguiente comando:

$ dig @192.168.0.100 www.midns.com
; <<>> DiG 9.9.5-11ubuntu1.3-Ubuntu <<>> @192.168.0.100 www.midns.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52020
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.midns.com. IN A

;; ANSWER SECTION:
www.midns.com. 259200 IN CNAME virtual.midns.com.
virtual.midns.com. 259200 IN A 192.168.0.100

;; AUTHORITY SECTION:
midns.com. 259200 IN NS ns.midns.com.

;; ADDITIONAL SECTION:
ns.midns.com. 259200 IN A 192.168.0.100

;; Query time: 60 msec
;; SERVER: 192.168.0.100#53(192.168.0.100)
;; WHEN: Fri Jul 07 22:10:23 VET 2017
;; MSG SIZE rcvd: 132

También pude comprobar el dominio “midns.com”, con el siguiente comando:

$ dig @192.168.0.100 midns.com

; <<>> DiG 9.9.5-11ubuntu1.3-Ubuntu <<>> @192.168.0.100 midns.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8861
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;midns.com.	IN	A

;; ANSWER SECTION:
midns.com. 259200 IN	A	192.168.0.100

;; AUTHORITY SECTION:
midns.com. 259200 IN	NS	ns.midns.com.

;; ADDITIONAL SECTION:
ns.midns.com. 259200	IN A	192.168.0.100

;; Query time: 34 msec
;; SERVER: 192.168.0.100#53(192.168.0.100)
;; WHEN: Sat Jul 08 00:25:49 VET 2017
;; MSG SIZE  rcvd: 106

Herramienta “nslookup”

Es una utilidad de consulta los servidores de nombres de Internet de forma interactiva. Nslookup tiene dos modos de trabajo:

  • El modo interactivo permite al usuario consultar los servidores de nombres para obtener información sobre varios hosts y dominios o para imprimir una lista de hosts en un dominio.
  • El modo no interactivo se utiliza para imprimir nombre e información solicitada para un host o dominio.

Para comprobar el dominio “www.midns.com” del DNS usando la herramienta “nslookup”, ejecute el siguiente comando:

$ nslookup www.midns.com
Server: 192.168.0.100
Address: 192.168.0.100#53

www.midns.com canonical name = virtual.midns.com.
Name: virtual.midns.com
Address: 192.168.0.100

También pude comprobar el dominio “midns.com”, con el siguiente comando:

$ nslookup midns.com
Server: 192.168.0.100
Address: 192.168.0.100#53

Name: midns.com
Address: 192.168.0.100

Además pude comprobar la zona inversa del DNS, con el siguiente comando:

$ nslookup 192.168.1.1
Server: 192.168.1.101
Address: 192.168.1.101#53

1.1.168.192.in-addr.arpa name = router.posadaturisticalamarucha.com.

Utilidades por defecto disponibles

Adicionalmente existen otras herramientas de linea de comando incluida por defecto en los sistemas operativo, muy útil para la interacción en redes y especifico con el servidor DNS. A continuación describo dos de estas:

Herramienta “host”

Es una utilidad simple para realizar búsquedas DNS. Normalmente se utiliza para convertir nombres a direcciones IP y viceversa. Cuando no se dan argumentos ni opciones, el host imprime un breve resumen de sus argumentos y opciones de la línea de comando.

Para comprobar el dominio “www.midns.com” del DNS usando la herramienta “host”, ejecute el siguiente comando:

$ host www.midns.com
www.midns.com is an alias for virtual.midns.com.
virtual.midns.com has address 192.168.0.10

También pude comprobar el dominio “midns.com”, con el siguiente comando:

$ host midns.com
midns.com has address 192.168.0.10

Además pude comprobar la zona inversa del DNS, con el siguiente comando:

$ host 192.168.1.1
1.1.168.192.in-addr.arpa domain name pointer router.posadaturisticalamarucha.com.

Herramienta “ping”

Del Ingles Ping (Packet Internet Groper o Buscador de paquetes en Internet) es una herramienta de comandos incluida por defecto en los sistemas operativos con la cual tendremos la posibilidad de verificar el estado de una conexión a un equipo local o remoto y esto es bastante útil para comprobar si una determinada dirección IP o equipo es accesible o no y de esta manera tomar acciones administrativas.

Para comprobar el dominio “www.midns.com” del DNS usando la herramienta “ping”, ejecute el siguiente comando:

$ ping -c3 www.midns.com
PING www.midns.com (127.0.0.1) 56(84) bytes of data.
64 bytes from www.midns.com (127.0.0.1): icmp_seq=1 ttl=64 time=0.173 ms
64 bytes from www.midns.com (127.0.0.1): icmp_seq=2 ttl=64 time=0.126 ms
64 bytes from www.midns.com (127.0.0.1): icmp_seq=3 ttl=64 time=0.090 ms

--- www.midns.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.090/0.129/0.173/0.036 ms

También pude comprobar el dominio “midns.com”, con el siguiente comando:

$ ping -c3 midns.com
PING www.midns.com (127.0.0.1) 56(84) bytes of data.
64 bytes from www.midns.com (127.0.0.1): icmp_seq=1 ttl=64 time=0.139 ms
64 bytes from www.midns.com (127.0.0.1): icmp_seq=2 ttl=64 time=0.120 ms
64 bytes from www.midns.com (127.0.0.1): icmp_seq=3 ttl=64 time=0.151 ms

--- www.midns.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.120/0.136/0.151/0.018 ms

Conclusiones

De esta forma usted ha aprendido a:

  • Instalar el servidor DNS con BIND9.
  • Configurar el servidor DNS maestro con BIND9.
  • Crear las zonas “directas” e “inversas” para su dominio.
  • Gestionar el servicio BIND9 con los comandos más comunes.
  • Auditar el registro de eventos del servidor DNS con BIND9.
  • Probar el funcionamiento del servidor DNS con BIND9 usando utilidades más comunes.

Agradecimientos

A los Linuxeros del grupo en Telegram Linux VE por sus orientaciones iniciales sobre los servidores DNS y su recomendaciones, me sirvieron de mucha guia para decidirme por cual herramienta de DNS en Linux usar. GRACIAS!!!

A Jesús “Chuda” Contreras por su paciencia al explicarme y facilitarme documentación efectiva para lograr entender el funcionamiento y configuración de un DNS en Linux… GRACIAS PERRITA :-*

Referencia

¡Haz tu donativo!

Si te gusto este articulo, por favor, ayúdame a seguir escribiendo este tipo de articulo, haciendo donativos en Dolares vía el servicio Paypal haciendo clic aquí o en la siguiente imagen.


PayPal - The safer, easier way to pay online!


También puede realizar su donativo con Bitcoin (BTC) en escaneando el siguiente código QR:

¡Ayúdame a continuar Blog de lcaballero.wordpress.com!

O usando en la siguiente dirección:

bitcoin:13uZUXXqLP3Ct3ksWHXnDqSrbMbhDV9hGz

Anuncios

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