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:
- /etc/bind/named.conf
- /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
Referencias
http://www.debian-administration.org/articles/343
http://albertomolina.wordpress.com/2008/11/14/dns-dinamico/
Comentarios
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!
En mi caso, estos son los permisos del fichero rndc.key
Si tengo los permisos igual y no hay manera de que funcione el dhcp….no se que parte de permisos falla…
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…
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/
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…:$
buenas buenas, te omento q haciendo los pasos q describes para levantar el dns me da error y aun no se configura ni se levanta… bueno espero q me puedas ayudar… uso ubuntu 10.4 solo quiero un servidor dns local para la misma computadora… en vez de localhost, escribir mi dominio, para presentar un proyecto q tiene ftp, webmail, telnet php+mysql en realidad todo ya funciona menos mu server dns… tengo una coneccion a internet… sera q me puedea ayudar? gracias de ante mano
Me podrias ayudar, estoy instalando el DDNS y tengo la duda:
Los NS en el archivo db.xxxx son los host (los equipos DNS y hay que agregar todos los host en este apartado?)
NS ushuaia.
ushuaia A 192.168.1.2
Donde ushuai es un host con ip 192.168.1.2, estoy en lo correcto o entendi mal?
Saludos y por favor
me podrian ayudar a montar un dhcp en un ubuntu 10.4, porfavor de ayudarme con los comandos para instalar dhcp
Hola buenas, he realizado esta práctica y me funciona con los clientes ubuntu pero no con los clientes windows, se hecho es que ni siquiera el servidor DHCP me da la IP para los clientes windows. Cuando observo el syslog, me muestra como el cliente windows recibe el DHCPOFFER pero el cliente no responde. La cosa es que si instalo solo el servidor DHCP o el servidor DNS si que funciona con los clientes windows, pero si hago DNS +DHCP no me va. ¿Alguna solución? Gracias;
La verdad es que este post lo hice en el año 2009 (si te fijas la versión que usaba de Ubuntu era la 8.10) cuando ya estamos en la versión 14.10. Y como puedes leer, la práctica la realicé solamente con equipos clientes Linux no con clientes Windows así que no sé que te puede estar pasando.
Lo mejor es investigar los logs tanto de server como de cliente tanto del DNS como del DHCP para ver qué puede estar pasando aunque es raro que juntos no funcionen y separados sí.
De todas formas lo mejor sería trabajar con las últimas versiones estables de servidor y partir desde ahí ya que, aunque quisiera ayudarte no puedo al no estar ya utilizando Ubuntu 8.10.
Saludos y gracias por leer y aplicar el post!
Post preview:
Close preview