DNS dinámico (DDNS) y DHCP en ubuntu

Características del montaje

Vamos a utilizar un equipo que va a actuar como servidor DHCP y DNS, por lo que la comunicación entre estos dos servicios será a través de localhost. Configuraremos inicialmente DNS con RNDC, para la sincronización entre los dos servicios a través del puerto 953/tcp.

Utilizaremos el dominio de pruebas “patagonia.es” y el segmento 192.168.1.0 para la red local de direcciones privadas.
Software utilizado

* Distribución: Ubuntu Server 8.10
* Servidor DNS: Bind 9
* Servidor DHCP: Dhcp3-server

Instalar el servidor DNS (Bind9)

aptitude install bind9

El directorio /etc/bind/ contiene los siguientes ficheros:

-rw-r--r-- 1 root root  237 oct  7 23:47 db.0
-rw-r--r-- 1 root root  271 oct  7 23:47 db.127
-rw-r--r-- 1 root root  237 oct  7 23:47 db.255
-rw-r--r-- 1 root root  353 oct  7 23:47 db.empty
-rw-r--r-- 1 root root  270 oct  7 23:47 db.local
-rw-r--r-- 1 root root 2878 oct  7 23:47 db.root
-rw-r--r-- 1 root bind  907 oct  7 23:47 named.conf
-rw-r--r-- 1 root bind  165 oct  7 23:47 named.conf.local
-rw-r--r-- 1 root bind  572 oct  7 23:47 named.conf.options
-rw-r----- 1 bind bind   77 nov 13 13:57 rndc.key
-rw-r--r-- 1 root root 1317 oct  7 23:47 zones.rfc1918

Los ficheros named.conf.* eran originalmente sólo uno, ahora se modifican principalmente named.conf.options y named.conf.local, para incluir respectivamente las opciones de bind y la definición de las zonas locales.

El fichero rndc.key contiene una clave para el rndc, que será muy importante en la sincronización con el servidor DHCP.

Habrá que cambiar los permisos del fichero rndc.key con la siguiente instrucción:

chmod o+r rndc.key

Y nos quedaría como:

-rw-r--r-- 1 bind bind   77 2008-12-20 20:44 rndc.key

O nos daría el error siguiente:

Can't open /etc/bind/rndc.key: Permission denied

Y añadir el usuario dhcpd al grupo bind, con la siguiente orden:

adduser dhcpd bind

Los ficheros a configurar serían:

  1. /etc/bind/named.conf
  2. /etc/bind/named.conf.local
Fichero named.conf

Añadimos lo siguiente al fichero:

controls {
        inet 127.0.0.1 allow{localhost;} keys {"rndc-key";};
};

Fichero named.conf.local

Supongamos que queremos resolver las direcciones de nuestra red local, y que pertenecen al dominio patagonia.es. Para ello editamos el fichero named.conf.local que inicialmente sólo tiene algunas líneas comentadas e incluimos las siguientes entradas:

zone "patagonia.es" {
        type master;
        file "/etc/bind/db.patagonia";
        allow-update {key "rndc-key";};
        notify yes;
};

zone "1.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.192.168.1";
        allow-update {key "rndc-key";};
        notify yes;
};

include "/etc/bind/rndc.key";

Es decir, crearemos dos ficheros que incluirán las entradas para la resolución directa (db.patagonia) e inversa (db.192.168.1), además se incluye la directiva “allow-update” para que puedan actualizarse las entradas DNS a través de rndc y se indica el nombre de la clave.

Los ficheros db.patagonia y db.192.168.1 se deben crear en el directorio /etc/bind como indicamos con la directiva file.

Y su contenido podría ser (incluyendo sólo el propio servidor DNS de forma estática, ya que estará fuera del rango de direcciones IP que reparte el servidor DHCP):

db.patagonia

$ORIGIN patagonia.es.
$TTL 86400 ; 1 day
@       IN      SOA     ushuaia   postmaster (
        200811132 ; serial
        21600 ; refresh (6 hours)
        3600 ; retry (1 hour)
        604800 ; expire (1 week)
        21600 ; minimum (6 hours)
)
            NS      ushuaia
ushuaia   A       192.168.1.2

db.192.168.1

$ORIGIN 1.168.192.in-addr.arpa.
$TTL 86400 ; 1 day
@       IN      SOA     ushuaia   postmaster (
        200811131 ; serial
        21600 ; refresh (6 hours)
        3600 ; retry (1 hour)
        604800 ; expire (1 week)
        21600 ; minimum (6 hours)
)
        NS      ushuaia.patagonia.es.
2     PTR     ushuaia.patagonia.es.

Prueba de funcionamiento del servidor DNS

Utilizando algún cliente DNS (preferentemente dig), haremos consultas al servidor DNS local y comprobaremos si responde correctamente, por ejemplo:

root@ushuaia:~# dig @127.0.0.1 ushuaia.patagonia.es

; <<>> DiG 9.5.0-P2 <<>> @127.0.0.1 ushuaia.patagonia.es
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37674
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;ushuaia.patagonia.es.          IN      A

;; ANSWER SECTION:
ushuaia.patagonia.es.   604800  IN      A       192.168.1.2

;; AUTHORITY SECTION:
patagonia.es.           604800  IN      NS      ushuaia.patagonia.es.

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Dec 20 22:02:54 2008
;; MSG SIZE  rcvd: 68

Instalar el servidor DHCP (dhcp3-server)
aptitude install dhcp3-server

No se inicia y nos indica que busquemos el motivo en syslog, editamos el fichero /var/log/syslog y encontramos la línea:

dhcpd: Not configured to listen on any interfaces!

Editamos el fichero /etc/default/dhcp3-server y suponiendo que este equipo debe ofrecer las direcciones IP a la red a la que está conectado por la interfaz eth0, ponemos:

INTERFACES="eth0"

Además editamos el fichero /etc/dhcp3/dhcpd.conf que debe ser como sigue:

server-identifier       ushuaia;
ddns-updates            on;
ddns-update-style       interim;
ddns-domainname         "patagonia.es.";
ddns-rev-domainname     "in-addr.arpa.";
ignore                  client-updates;

include                 "/etc/bind/rndc.key";

zone patagonia.es. {
        primary 127.0.0.1;
        key rndc-key;
}

option domain-name              "patagonia.es.";
option domain-name-servers      192.168.1.2, 192.168.1.1;
option ntp-servers              192.168.1.2;
option ip-forwarding            off;

default-lease-time              600;
max-lease-time                  7200;
authoritative;

log-facility local7;

subnet 192.168.1.0 netmask 255.255.255.0 {
        range 192.168.1.100 192.168.1.200;
        option broadcast-address 192.168.1.255;
        option routers  192.168.1.2;
        allow           unknown-clients;

        zone 1.168.192.in-addr.arpa. {
                primary 192.168.1.2;
                key "rndc-key";
        }

        zone localdomain. {
                primary 192.168.1.2;
                key "rndc-key";
        }
}

host impresora {
  hardware ethernet 00:11:85:d2:5c:c6;
  fixed-address 192.168.1.33;
}

Como vemos, reservamos la IP para la impresora.

Puesta en marcha

Lo primero que haremos será parar ambos servidores y vaciar los ficheros de peticiones dhcp que se pudiesen haber generado:

/etc/init.d/bind9 stop
/etc/init.d/dhcp3-server stop
echo "" > /var/lib/dhcp3/dhcpd.leases
echo "" > /var/lib/dhcp3/dhcpd.leases~

Ponemos en marcha de nuevo los dos servidores y realizamos una petición DHCP desde un cliente de la red, y si todo va bien se generarán en el fichero de trabajo del bind (etc/bind/) dos nuevos ficheros, db.patagonia.jnl y db.192.168.1.jnl.
Ahora si hacemos desde el servidor, un nslookup a dicho cliente nos debe aparecer algo así:

root@ushuaia:/etc/bind# nslookup 192.168.1.102
Server:         127.0.0.1
Address:        127.0.0.1#53

102.1.168.192.in-addr.arpa      name = yamana.patagonia.es.

Y de forma inversa:

root@ushuaia:/etc/bind# nslookup yamana.patagonia.es
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   yamana.patagonia.es
Address: 192.168.1.102


Comentarios

me da error de permisos en el archivo rndc.key con los permisos activados
Javier (guest) 1255605564|%e %b %Y, %H:%M %Z|agohover

Hola! en primer lugar felicitarte por el manual es genial y todo muy bien explicado…pero tengo un problema que tal vez puedas ayudarme a solucionar…

Despues de hacer todos los pasos y configuraciones cuando activo el dhcp me da error diciendome que no puede abrir el fichero rndc.key: permiso denegado…

Lo curioso esque ya le he cambiado el permiso a otros para que pueda leerlo…y el usuario esta creado y agregado al grupo para mas incredulidad…

Sabrias decirme que puede estar pasando??

Mil gracias!

unfold me da error de permisos en el archivo rndc.key con los permisos activados by Javier (guest), 1255605564|%e %b %Y, %H:%M %Z|agohover
Re: me da error de permisos en el archivo rndc.key con los permisos activados
jpcozar-public (guest) 1255888950|%e %b %Y, %H:%M %Z|agohover

En mi caso, estos son los permisos del fichero rndc.key

$ ls -l rndc.key 
-rw-r--r-- 1 bind bind 77 2008-12-20 20:44 rndc.key
unfold Re: me da error de permisos en el archivo rndc.key con los permisos activados by jpcozar-public (guest), 1255888950|%e %b %Y, %H:%M %Z|agohover
Javier (guest) 1256034030|%e %b %Y, %H:%M %Z|agohover

Si tengo los permisos igual y no hay manera de que funcione el dhcp….no se que parte de permisos falla…

unfold by Javier (guest), 1256034030|%e %b %Y, %H:%M %Z|agohover
Javier (guest) 1256035739|%e %b %Y, %H:%M %Z|agohover

pork si pusiera el archivo rndc.key en la carpeta dhcp funcionaria igual?…quiero decir, el archivo rndc.key se va modificando o es estatico y solamente contiene la clave??? si pongo un archivo en cada directorio si que me funciona o almenos no me da error al iniciar el servicio, lo que no se si los servicios funcionaran correctamente por si tienen que leer algun archivo conjuntamente…

Gracias…

unfold by Javier (guest), 1256035739|%e %b %Y, %H:%M %Z|agohover
Con qué versión de Ubuntu estás trabajando ?
jpcozar-public (guest) 1256108553|%e %b %Y, %H:%M %Z|agohover

Hay un bug relativo al rndc.key y el dhcp de permisos aquí:

https://bugs.launchpad.net/ubuntu/+source/dhcp3/+bug/341817

De todas formas, si no se resuelve una vez "updateado" tu ubuntu (que no sé si es server o desktop) intenta seguir los enlaces que contienen la información ampliada que tengo como referencias:

http://www.debian-administration.org/articles/343
http://albertomolina.wordpress.com/2008/11/14/dns-dinamico/

unfold Con qué versión de Ubuntu estás trabajando ? by jpcozar-public (guest), 1256108553|%e %b %Y, %H:%M %Z|agohover
Javier (guest) 1256200679|%e %b %Y, %H:%M %Z|agohover

Bueno lo he "arreglado" poniendo una copia del archivo en el dhcp y el dhcp configurado para que lo lea desde aqui…aunque ahora el servidor dns no me responde..no se si sera por esto o por mala configuración…:$

unfold by Javier (guest), 1256200679|%e %b %Y, %H:%M %Z|agohover
Add a new comment
Referencias

http://www.debian-administration.org/articles/343
http://albertomolina.wordpress.com/2008/11/14/dns-dinamico/

Page tags: ddns dhcp dinámico dns
page_revision: 10, last_edited: 1235154596|%e %b %Y, %H:%M %Z (%O ago)
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License