Servidor DNS en Debian Jessie

Siguiendo con el proyecto del servidor Debian, ahora queremos instalar un servidor DNS que gestione los nombres de las máquinas y recursos de nuestra Intranet, y así no tener que usar la resolución estática para cada uno de nuestros clientes. Además de todo esto conseguiremos una mayor velocidad de navegación en nuestros clientes.

En este post veremos:


Ventajas de tener un servidor DNS en la Intranet

  • Resolución dinámica de los sitios web de la Intranet

Gracias al servidor servidor DNS se podrá resolver los nombres de los sitios web de la Intranet y así no tendremos que comprar un dominio en Internet.

  • Mayor velocidad en la navegación

Teniendo instalado un servidor DNS en la Intranet se agilizará la velocidad de navegación en Internet ya que al hacer la primera resolución de un nombre, ésta quedará guardada en la caché de nuestro servidor DNS y no tendremos nuevamente que recurrir a los servidores DNS externos, haciendo el proceso de resolución mucho mas rápido.


Instalación y configuración del servidor DNS

Las características del servidor DNS que queremos instalar son las siguientes:

  • Zona para el dominio: elolimpo.org
  • Zona de resolución inversa.
  • El nombre del servidor es zeus.
  • Queremos nombrar al cliente que tenía asignada una reserva.
  • Tenemos dos sitios web: www.elolimpo.org y informatica.elolimpo.org.

Instalación del servidor DNS

En nuestro caso usaremos como servidor DNS «bind9», lo instalamos siendo «root»:

aptitude install bind9

Configuración del servidor DNS

Para la configuración del servidor DNS necesitamos editar un archivo y crear dos nuevos, para ello:

  • Editamos el archivo /etc/bind/named.conf.local siendo «root» y lo dejamos tal que así:
zone "elolimpo.org" {
type master;
file "zd.elolimpo";
};

zone "0.168.192.in-addr.arpa" {
type master;
file "zi.elolimpo";
};

Vemos que tenemos dos apartados, el primero que corresponde a la zona directa y el segundo a la zona inversa. Cada uno de estos apartados tienen escrito varios parámetros dónde «zone» es el nombre de la zona, «type» es el tipo de DNS sobre la zona y «master» indica que este DNS será el que indique los ficheros de zona sobre los cuales este DNS es autoritario, y «file» es el nombre del fichero de la zona que se alojará en el directorio /var/cache/bind/ .

  • Creamos el archivo de la zona directa siendo «root»:
nano /var/cache/bind/zd.elolimpo

Escribimos las siguientes líneas para determinar la configuración y los registros de la zona:

$TTL 86400      ; 1 day
@                       IN      SOA             zeus.elolimpo.org. postmaster.e$
                                19423      ; serial
                                21600      ; refresh (6 hours)
                                3600       ; retry (1 hour)
                                604800     ; expire (1 week)
                                21600      ; minimum (6 hours)
                                )
@                       IN      NS              zeus.elolimpo.org.

$ORIGIN elolimpo.org.
zeus            IN      A       192.168.0.254
poseidon        IN      A       192.168.0.200
www             IN      CNAME   zeus
informatica     IN      CNAME   zeus
ftp             IN      CNAME   zeus

En la línea de «SOA» se establecerá el nombre del servidor con autoridad y el correo del administrador, y en la línea de «NS»  pondremos el nombre del servidor. En las últimas líneas se establecerán los diferentes tipos de registros, en nuestro caso del tipo «A» y «CNAME». Si no os gusta escribir mucho también se puede escribir el parámetro «$ORIGIN» seguido del prefijo (nombre de dominio) que se le establecerá a todos los registros de abajo.

  • Creamos el archivo de la zona inversa siendo «root»:
nano /var/cache/bind/zi.elolimpo

Escribimos las siguientes líneas para determinar la configuración y los registros de la zona:

$TTL 86400      ; 1 day
@       IN SOA          zeus.elolimpo.org. postmaster.elolimpo.org. (
                                12998      ; serial
                                21600      ; refresh (6 hours)
                                3600       ; retry (1 hour)
                                604800     ; expire (1 week)
                                21600      ; minimum (6 hours)
                                )
@       IN NS           zeus.elolimpo.org.

$ORIGIN 0.168.192.in-addr.arpa.
254     IN PTR          zeus.elolimpo.org.
200       IN PTR          poseidon.elolimpo.org.

Aquí lo único que cambia es la parte de los registros, dónde sólo pondremos registros del tipo «PTR». También podemos usar el truco «$ORIGIN» para no tener que escribir tanto.

Si por algún motivo en nuestra red hay otro servidor DNS y solo él puede realizar la resolución de nombres de Internet, debemos establecer a nuestro servidor DNS en modo puente. Para ello editaremos siendo «root» el fichero /etc/bind/named.conf.options dejando las siguientes líneas tal que así:

forwarders {
        192.168.102.2;
         };

Dónde la Ip que hemos puesto será la del otro servidor DNS.

Por último para que se efectúen los cambios recargamos el archivo de configuración de bind9, para ello escribimos lo siguiente siendo «root»:

systemctl reload bind9

Modificación de la configuración del servidor DHCP

Ahora modificamos el archivo de configuración del servidor DHCP para que los clientes tomen como servidor DNS al que hemos instalado, para ello editamos como «root» el fichero /etc/dhcp/dhcpd.conf y dejamos la línea de option domain-name-servers tal que así:

subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.3 192.168.0.253;
  option routers 192.168.0.254;
  option broadcast-address 192.168.0.255;
  option domain-name-servers 192.168.0.254;
  option domain-name "elolimpo.org";
}

Reiniciamos el servidor DHCP siendo «root»:

systemctl restart isc-dhcp-server

Modificación de los ficheros «hosts» de los clientes

Ya que no necesitamos resolución estática de los nombres, eliminaremos la línea que introducimos anteriormente en los ficheros «hosts» de los clientes y las dejamos tal que así:

  • En Windows:
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
#    127.0.0.1       localhost
#    ::1             localhost
  • En Linux:
127.0.0.1       localhost
127.0.1.1       poseidon

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Pruebas de funcionamiento

Finalmente probaremos que funciona nuestro servidor DNS, para ello haremos varias peticiones de resolución de nombres en la línea de comandos de nuestros clientes:

  • En Windows con «nslookup»:

Servidor dns de elolimpo.org.

C:\Users\usuario>nslookup
Servidor predeterminado: zeus.elolimpo.org
Address: 192.168.0.254

> set type=NS
> elolimpo.org
Servidor:  zeus.elolimpo.org
Address:  192.168.0.254

elolimpo.org    nameserver = zeus.elolimpo.org
zeus.elolimpo.org       internet address = 192.168.0.254

Dirección ip de informatica.elolimpo.org.

C:\Users\usuario>nslookup informatica.elolimpo.org
Servidor:  zeus.elolimpo.org
Address:  192.168.0.254

Nombre:  zeus.elolimpo.org
Address:  192.168.0.254
Aliases:  informatica.elolimpo.org

Nombre de la dirección ip del servidor (resolución inversa).

C:\Users\usuario>nslookup
Servidor predeterminado:  zeus.elolimpo.org
Address:  192.168.0.254

> set type=PTR
> 192.168.0.254
Servidor:  zeus.elolimpo.org
Address:  192.168.0.254

254.0.168.192.in-addr.arpa      name = zeus.elolimpo.org
0.168.192.in-addr.arpa  nameserver = zeus.elolimpo.org
zeus.elolimpo.org       internet address = 192.168.0.254

Dirección ip de http://www.josedomingo.org.

C:\Users\usuario>nslookup www.josedomingo.org
Servidor:  zeus.elolimpo.org
Address:  192.168.0.254

Respuesta no autoritativa:
Nombre:  ec2-52-90-64-199.compute-1.amazonaws.com
Address:  52.90.64.199
Aliases:  www.josedomingo.org
          wordpress-pledin.rhcloud.com
          ex-std-node697.prod.rhcloud.com
  • En Linux con»dig»:

Servidor dns de elolimpo.org.

debian@poseidon:~$ dig ns elolimpo.org

; <<>> DiG 9.9.5-9+deb8u6-Debian <<>> ns elolimpo.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53790
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;elolimpo.org.            IN    NS

;; ANSWER SECTION:
elolimpo.org.        86400    IN    NS    zeus.elolimpo.org.

;; ADDITIONAL SECTION:
zeus.elolimpo.org.    86400    IN    A    192.168.0.254

;; Query time: 2 msec
;; SERVER: 192.168.0.254#53(192.168.0.254)
;; WHEN: Sun Feb 12 21:12:30 CET 2017
;; MSG SIZE  rcvd: 76

Dirección ip de informatica.elolimpo.org.

debian@poseidon:~$ dig informatica.elolimpo.org

; <<>> DiG 9.9.5-9+deb8u6-Debian <<>> informatica.elolimpo.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24197
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;informatica.elolimpo.org.    IN    A

;; ANSWER SECTION:
informatica.elolimpo.org. 86400    IN    CNAME    zeus.elolimpo.org.
zeus.elolimpo.org.    86400    IN    A    192.168.0.254

;; AUTHORITY SECTION:
elolimpo.org.        86400    IN    NS    zeus.elolimpo.org.

;; Query time: 3 msec
;; SERVER: 192.168.0.254#53(192.168.0.254)
;; WHEN: Sun Feb 12 21:13:07 CET 2017
;; MSG SIZE  rcvd: 102

Nombre de la dirección ip del servidor (resolución inversa).

debian@poseidon:~$ dig -x 192.168.0.254

; <<>> DiG 9.9.5-9+deb8u6-Debian <<>> -x 192.168.0.254
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9611
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;254.0.168.192.in-addr.arpa.    IN    PTR

;; ANSWER SECTION:
254.0.168.192.in-addr.arpa. 86400 IN    PTR    zeus.elolimpo.org.

;; AUTHORITY SECTION:
0.168.192.in-addr.arpa.    86400    IN    NS    zeus.elolimpo.org.

;; ADDITIONAL SECTION:
zeus.elolimpo.org.    86400    IN    A    192.168.0.254

;; Query time: 5 msec
;; SERVER: 192.168.0.254#53(192.168.0.254)
;; WHEN: Sun Feb 12 21:13:58 CET 2017
;; MSG SIZE  rcvd: 116

Dirección ip de http://www.josedomingo.org.

debian@poseidon:~$ dig www.josedomingo.org

; <<>> DiG 9.9.5-9+deb8u6-Debian <<>> www.josedomingo.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9931
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 4, ADDITIONAL: 5

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

;; ANSWER SECTION:
www.josedomingo.org.    900    IN    CNAME    wordpress-pledin.rhcloud.com.
wordpress-pledin.rhcloud.com. 60 IN    CNAME    ex-std-node697.prod.rhcloud.com.
ex-std-node697.prod.rhcloud.com. 150 IN    CNAME    ec2-52-90-64-199.compute-1.amazonaws.com.
ec2-52-90-64-199.compute-1.amazonaws.com. 603792 IN A 52.90.64.199

;; AUTHORITY SECTION:
amazonaws.com.        171792    IN    NS    r2.amazonaws.com.
amazonaws.com.        171792    IN    NS    r1.amazonaws.com.
amazonaws.com.        171792    IN    NS    u1.amazonaws.com.
amazonaws.com.        171792    IN    NS    u2.amazonaws.com.

;; ADDITIONAL SECTION:
r1.amazonaws.com.    171792    IN    A    205.251.192.27
r2.amazonaws.com.    171792    IN    A    205.251.195.199
u1.amazonaws.com.    792    IN    A    156.154.64.10
u2.amazonaws.com.    792    IN    A    156.154.65.10

;; Query time: 686 msec
;; SERVER: 192.168.0.254#53(192.168.0.254)

Deja un comentario