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
- Instalación y configuración del servidor DNS
- Modificación de la configuración del servidor DHCP
- Modificación de los ficheros «hosts» de los clientes
- Pruebas de funcionamiento
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
yinformatica.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)