Documente Academic
Documente Profesional
Documente Cultură
DNS dinmico
Alberto Molina Coballes, Jos Domingo Muoz Rodrguez y Jos Luis Rodrguez Rodrguez 17 de marzo de 2010
Usted es libre de copiar, distribuir y modificar este documento de acuerdo con las condiciones de la licencia Attribution-ShareAlike 3.0 de Creative Commons. Puede ver una copia de sta en: http://creativecommons.org/licenses/by-sa/3.0/es/
Indice
1. Introduccin 2. Instalacin y configuracin de Bind9 2.1. Creacin de las zonas locales . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Prueba de funcionamiento del servidor DNS . . . . . . . . . . . . . . . . . . 3. Instalacin y configuracin de dhcp3-server 4. Puesta en marcha de los servicios 5. Configuracin de los clientes DHCP
3 3 4 5 5 7 7
1. Introduccin
Es muy cmodo utilizar DHCP en una red local, pero tiene un inconveniente: no sabemos qu direccin tiene en cada momento un equipo. Una solucin para esto es sincronizar el servidor DHCP con el DNS, creando lo que se denomina un servidor DNS dinmico (DDNS). Esta configuracin permite que cada vez que se modifique una direccin IP se registre el cambio , en los ficheros que controlan la zona local y, de esta manera, poder acceder a un equipo a travs de su nombre. Vamos a utilizar un mismo equipo como servidor DHCP y DNS, por lo que la comunicacin entre estos dos servicios ser a travs de localhost. Configuraremos incialmente DNS con RNDC, para la sincronizacin entre los dos servicios a travs del puerto 953/tcp.
Los ficheros named.conf.* eran originalmente slo uno, ahora se modifican principalmente named.conf.options y named.conf.local, para incluir respectivamente las opciones de bind y la definicin de las zonas locales. El fichero rndc.key contiene una clave para el rndc, que ser muy importante en la sincronizacin con el servidor DHCP: /etc/bind/rndc.key
1 2 3 4
key "rndc -key" { algorithm hmac -md5; secret " S9QTPFn8zklrPHQ7z6XcOA =="; };
Obviamente la clave cambiar en cada equipo y se genera de forma automtica al instalar bind9, aunque es posible generar una nueva clave mediante la instruccin rndc-confgen. Para que bind utilice rndc, hay que incluir las siguientes lneas en alguno de los ficheros named.conf.*:
1 2 3 4 5 6
include "/ etc/bind/rndc.key "; controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc -key "; }; };
de esta manera se permiten actualizaciones de las entradas DNS, pero slo a quien facilite la clave y slo desde localhost.
Nota: Conviene aclarar que el demonio de bind9 se denomina named y el usuario que lo ejecuta es bind (esto se especifica en el fichero /etc/default/bind9). Lgicamente el usuario bind deber tener los permisos pertinentes para actualizar los registros del DNS.
// // Do any local configuration here // // Consider adding the 1918 zones here , if they are not used in your // organization // include "/ etc/bind/ zones . rfc1918 "; zone " example .com" { type master ; file "db. example "; allow - update { key "rndc -key "; }; notify yes; }; zone "2.168.192. in -addr.arpa" { type master ; file "db .192.168.2"; allow - update { key "rndc -key "; }; notify yes; };
Es decir, crearemos dos ficheros que incluirn las entradas para la resolucin directa (db.example) e inversa (db.192.168.2), adems se incluye la directiva allow-update para que puedan actualizarse las entradas DNS a travs de rndc y se indica el nombre de la clave. Los ficheros db.example y db.192.168.2 se deben crear en el directorio de trabajo, que en este caso es /var/cache/bind, aunque hay gente que prefiere modificar este directorio por /etc/bind, en cualquier caso es importante asignar a estos ficheros el usuario y grupo propietario adecuado y los permisos siguientes:
-rw -rw -r-- 1 bind bind 313 nov 14 16:25 db .192.168.2 -rw -rw -r-- 1 bind bind 440 nov 14 16:25 db. example
Y su contenido podra ser (incluyendo slo el propio servidor DNS de forma esttica, ya que estar fuera del rango de direcciones IP que reparte el servidor DHCP): /var/cache/bind/db.example
1 2 3 4 5 6
$ORIGIN example .com. $TTL 86400 ; 1 day @ IN SOA avatar postmaster ( 1 ; serial 21600 ; refresh (6 hours ) 3600 ; retry (1 hour)
7 8 9 10 11
/var/cache/bind/db.192.168.2
1 2 3 4 5 6 7 8 9 10 11
$ORIGIN 2.168.192. in -addr.arpa. $TTL 86400 ; 1 day @ IN SOA avatar postmaster ( 200811131 ; serial 21600 ; refresh (6 hours ) 3600 ; retry (1 hour) 604800 ; expire (1 week) 21600 ; minimum (6 hours ) ) NS avatar . example .com. 1 PTR avatar . example .com.
IN
192.168.2.1
IN
NS
Query time: 0 msec SERVER : 127.0.0.1#53(127.0.0.1) WHEN: Tue Feb 23 17:27:49 2010 MSG SIZE rcvd: 77
No se inicia y nos indica que busquemos el motivo en syslog, editamos el fichero /var/log/syslog y encontramos la lnea:
dhcpd : Not configured to listen on any interfaces !
Editamos el fichero /etc/default/dhcp3-server y ponemos la interfaz de red por la que avatar debe ofrecer direcciones IP a sus clientes: /etc/default/dhcp3-server
11
Ahora queda definir un rango de direcciones para el servidor DHCP y los parmetros que hay que entregar a los clientes: /etc/dhcp3/dhcpd.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
################################################# # Lneas para la actualizacin del servidor DNS: server - identifier ddns - updates ddns -update - style ddns - domainname ddns -rev - domainname deny include zone example .com. { primary 127.0.0.1; key rndc -key; } zone 2.168.192. in -addr.arpa. { primary 127.0.0.1; key rndc -key; } ################################################# # Configuracin general del servidor DHCP default -lease -time 3600; max -lease -time 86400; authoritative ; ################################################# # Se reparten las direcciones 192.168.2.2 -192.168.2.127 # entre los clientes : subnet 192.168.2.0 netmask 255.255.255.0 { range 192.168.2.2 192.168.2.127; option routers 192.168.2.1; option domain -name " example .com ."; option domain -name - servers 192.168.2.1; option broadcast - address 192.168.2.255; } avatar ; on; interim ; " example .com ."; "in -addr.arpa ."; client - updates ; "/ etc/bind/rndc.key ";
Lo primero que haremos ser parar ambos servidores y vaciar los ficheros de peticiones dhcp que se pudiesen haber generado:
avatar :# avatar :# avatar :# avatar :# /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 peticin DHCP desde un cliente de la red, abrimos el fichero /var/log/syslog y si todo va bien nos aparecern lneas como:
avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar dhcpd : DHCPDISCOVER from 00:11:09:60: c6 : ec v i a eth2 dhcpd : DHCPOFFER on 192.168.2.2 t o 00:11:09:60: c6 : ec ( c l i e n t e ) v i a eth2 named [ 4 5 9 6 ] : c l i e n t 127.0.0.1#51880: s i g n e r " rndckey " a p p r o v e d named [ 4 5 9 6 ] : c l i e n t 127.0.0.1#51880: u p d a t i n g zone ' example . com / IN ' : a d d i n g an RR a t c l . . . named [ 4 5 9 6 ] : c l i e n t 127.0.0.1#51880: u p d a t i n g zone ' example . com / IN ' : a d d i n g an RR a t ' c . . . named [ 4 5 9 6 ] : j o u r n a l f i l e db . example . j n l does n o t e x i s t , c r e a t i n g i t dhcpd : Added new f o r w a r d map from c l i e n t e . example . com . t o 192.168.2.2 named [ 4 5 9 6 ] : c l i e n t 127.0.0.1#39603: s i g n e r " rndckey " a p p r o v e d named [ 4 5 9 6 ] : c l i e n t 127.0.0.1#39603: u p d a t i n g zone ' 2 . 1 6 8 . 1 9 2 . i naddr . a r p a / IN ' : d e l e t i . . . named [ 4 5 9 6 ] : c l i e n t 127.0.0.1#39603: u p d a t i n g zone ' 2 . 1 6 8 . 1 9 2 . i naddr . a r p a / IN ' : a d d i n g . . . named [ 4 5 9 6 ] : j o u r n a l f i l e db .192.168.2. j n l does n o t e x i s t , c r e a t i n g i t named [ 4 5 9 6 ] : zone 2.168.192. i naddr . a r p a / IN : s e n d i n g n o t i f i e s ( s e r i a l 200811133) dhcpd : added r e v e r s e map from 2.2.168.192. i naddr . a r p a . t o c l i e n t e . example . com . dhcpd : DHCPREQUEST f o r 192.168.2.2 ( 1 2 7 . 0 . 1 . 1 ) from 00:11:09:60: c6 : ec ( c l i e n t e ) v i a eth2 dhcpd : DHCPACK on 192.168.2.2 t o 00:1d : 0 9 : 6 0 : c6 : ec ( c l i e n t e ) v i a eth2
Tambin podemos comprobar que se han creado dos nuevos ficheros en el directorio de trabajo de bind:
-rw -r--r-- 1 bind bind 844 nov 14 18:08 db .192.168.2. jnl -rw -r--r-- 1 bind bind 911 nov 14 18:08 db. dominio .jnl
donde hay que sustituir en cada caso cliente por el nombre del equipo.