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 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:
- Zonas de búsquedas “directas” e “inversas”.
- 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, 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 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
Utilidades por defecto disponibles
Adicionalmente existen otras herramientas de linea de comandos 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 comandos.
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
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!]()
![]()
![]()