1 \chapter{Servidores de Configuración dinámica de Equipos - DHCP}
2 \section{El protocolo DHCP}
4 DHCP (Dynamic Host Configuration Protocol / Protocolo de configuración dinámica de equipos) es usado ampliamente y tiene numerosas posibilidades, como la asignación dinámicas de direcciones IP.
6 DHCP aparece como un protocolo estandar en Octubre de 1993 (RFC 2131).
8 \subsection{Asignación de IPs}
10 \begin{itemize}
11 \item[Manual] La asignación se hace de forma manual, de tal modo que para cada MAC se le asigna una ip fija.
12 \item[Automático] Se asigna un rango de ips que serán dadas a los clientes. Estas serán asignadas de tal forma que los clientes mantengan su IP.
13 \item[Dinámico] Se asigna un rango de ips que serán dadas a los clientes. Estas serán asigandas de forma dinámica, de tal manera que al arrancar la maquina el servidor le asignara una IP y esta puede ser diferente cada vez que arranque.
14 \end{itemize}
16 \subsection{Análisis del Protocolo}
18 El protocolo utilizara los puertos 67/UDP para el lado de servidor y 68/UDP para el lado de cliente.
20 \begin{itemize}
21 \item[DISCOVER] El cliente lanza un broadcast a 255.255.255.255 buscando un servidor DHCP, tambien hace peticiones indicando su ultima IP.
22 \item[OFFER] El servidor determina la configuración del cliente con entre otras cosas, la dirección MAC del cliente.
23 \item[REQUEST] El cliente pide la configuración al servidor, indicando la IP que este le ha configurado.
24 \item[ACKNOWLEDGE] El servidor lanza un broadcast para que los otros clientes vean lo que ha sucedido.
25 \end{itemize}
28 \section{Instalación}
30 Se descarga de \hlink{ftp://ftp.isc.org/isc/} y lo descomprimimos en /usr/src/dhcp-3.X.X, hacemos entonces los siguiente:
31 \jump
32 \begin{rbox}
33 # cd /usr/src/dhcp-3.X.X
34 # ./configure
35 # make
36 # make install
37 \end{rbox}
38 \jump
40 \section{Configuración Básica}
42 Al comenzar leera la configuración desde el archivo /etc/dhcp3/dhcp.conf, una configuración básica puede ser:
43 \jump
44 \begin{rbox}
45 # Intentara hacer una actualización automatica de dns (muy util para los windows 2k).
46 ddns-update-style interim;
47 ddns-hostname chaosdimension.org
48 ddns-domainname chaosdimension.org
50 # opciones de dominio y dns
51 option domain-name "chaosdimension.org";
52 option domain-name-servers ns1.chaosdimension.org, ns2.chaosdimension.org;
54 # Tiempos que se tendra una ip
55 default-lease-time 600;
56 max-lease-time 7200;
58 # Fichero donde se guardan las peticiones
59 # Muy interesante para actualizaciones dinamicas
60 lease-file-name /var/lib/dhcp/dhcpd.leases
62 # Si este es el unico servidor DHCP en la red
63 # se debe activar esta opción
64 #authoritative;
66 # Donde ira el registro de eventos
67 # En /etc/syslog.conf habra que poner algo como:
68 # log.local7 /var/log/dhcp3d.log
69 log-facility local7;
71 # Configuración de la subred y las IPs
72 subnet mysubnet.0 netmask 255.255.255.128 {
73 range mysubnet.1 mysubnet.127;
74 option broadcast-address mysubnet.128;
75 option routers gw1.chaosdimension.org, gw2.chaosdimension.org;
76 option domain-name-servers ns1.chaosdimension.org, ns2.chaosdimension.org;
77 option domain-name "chaosdimension.org";
78 default-lease-time 600;
79 max-lease-time 7200;
80 }
82 # Si lo que queremos es una configuración por equipos el sistema es:
83 host cliente1 {
84 hardware ethernet MAC.cliente1;
85 # filename "vmunix.passacaglia"; Muy interesante para subir archivos por tftp
86 fixed-address cliente1.chaosdimension.org;
87 server-name "chaosdimension.org";
88 }
90 \end{rbox}
91 \jump
93 \chapter{Servidores de Dominios de Nombres - DNS}
94 \section{El servicio de Dominio de Nombres}
95 \section{El servidor Bind 9}
97 Bind 9 es el servidor de nombres mas extendido por internet, aunque tenga la competencia de nuevos servidores como pdns(\hlink{http://www.powerdns.com/}) o djbdns(\hlink{http://cr.yp.to/djbdns.html}).
99 Tiene gran cantidad de documentación en el sitio web del ISC: \hlink{http://www.isc.org/index.pl?/sw/bind/bind9.php} , en especial muy interesante la guia del administrador de bind 9 en \hlink{http://www.nominum.com/content/documents/bind9arm.pdf}.
101 \section{Instalación}
103 Se descarga de \hlink{ftp://ftp.isc.org/isc/}
105 \section{Configuración Básica}
107 El archivo con la configuración de los dominios es /etc/bind/named.conf y la configuración que vamos a poner de ejemplo es bastante básica:
109 \jump
110 \begin{rbox}[label=named.conf]
111 // Clave para actualizaciones tipo dyndns
112 include "/etc/bind/dyndns-keyfile";
114 // Listas de acceso
116 acl local{
117 myipnetwork/24;
118 localhost/32;
119 };
121 acl slaves{
122 ip.slave.dns1/32;
123 ip.slave.dns2/32;
124 // Ad Infinitun ...
125 };
127 acl dhcp3{
128 ip.server.dhcp3/32;
129 };
132 // Controlando el registro de eventos
133 logging {
134 category lame-servers { null; };
135 category cname { null; };
136 };
138 // El dominio raiz, este archivo contiene la lista de servidores raices, se
139 // puede actualizar con el comando dig:
140 zone "." {
141 type hint;
142 file "/etc/bind/db.root";
143 };
145 // Sera siempre el dominio autorizado para localhost
147 zone "localhost" {
148 type master;
149 file "/etc/bind/db.local";
150 };
152 zone "127.in-addr.arpa" {
153 type master;
154 file "/etc/bind/db.127";
155 };
157 zone "0.in-addr.arpa" {
158 type master;
159 file "/etc/bind/db.0";
160 };
162 zone "255.in-addr.arpa" {
163 type master;
164 file "/etc/bind/db.255";
165 };
167 zone "chaosdimension.org" {
168 // Estamos en el servidor maestro
169 type master;
170 // LIsta de acceso al dominio
171 // Quienes pueden preguntar
172 allow-query {local; };
173 // Quienes pueden hacer transferencias (esclavos)
174 allow-transfer {slaves;};
175 // Quienes pueden hacer modificaciones de información
176 allow-update {dhcp3;};
177 // Notificaremos los cambios
178 notify yes;
179 file "/etc/bind/dominios/chaosdimension.org.dns";
180 };
181 \end{rbox}
182 \jump
183 \begin{rbox}[label=/etc/bind/dyndns-keyfile]
184 key getip {
185 algorithm hmac-md5;
186 secret "7YUVBA4v/5I=";
187 };
188 \end{rbox}
189 \jump
190 \begin{rbox}[label=dominios/chaosdimension.org.dns]
191 $TTL 86400
192 ;
193 ; Zone file for chaosdimension.org
194 ;
195 ; The full zone file
196 ;
197 @ IN SOA chaosdimension.org hostmaster.chaosdimension.org. (
198 2005060901 ; serial, todays date + todays serial ##
199 8H ; refresh, seconds
200 2H ; retry, seconds
201 2W ; expire, seconds
202 1D ) ; minimum, seconds
203 ;
204 NS ns1.chaosdimension.org. ; Inet Address of name server
205 NS ns2.chaosdimension.org.
206 MX 10 mx.chaosdimension.org. ; Primary Mail Exchanger
207 ;
209 $ORIGIN chaosdimension.org.
210 sistemas IN A 192.168.0.155
211 ldap IN A 192.168.1.1
213 server1 IN A 192.168.1.2
214 server2 IN A 192.168.1.3
215 server3 IN A 192.168.1.4
218 krb IN A 192.168.1.1
219 kdc IN A 192.168.1.1
220 kadmin IN A 192.168.1.1
221 kpasswd IN A 192.168.1.1
223 ns1 IN A 192.168.1.1
224 ns2 IN A 192.168.1.2
226 @ IN A 192.168.1.1
228 \end{rbox}
229 \jump
232 \section{Una configuración avanzada}
234 \subsection{DHCP-ddns}
236 Si queremos actualización automatica desde los servidores DHCP, tendremos que cambiar cosas en nuestra configuración, entre otras cosas muy importantes permisos, en la configuración anterior se indica la lista de acceso dhcp3 para el acceso de actualización (update) desde el servidor DHCP.
238 \subsection{SDB}
240 SDB (BIND 9 Simplified Database Interface / Interface simplificado a la base de datos de Bind 9) es una base de datos en memoria de los contenidos de la configuración de bind9, este sistema es expansible a otros sistemas de bases de datos, con los cuales se puede manipular la información en Bind 9.
242 \subsection{DYNDNS}
244 DYNDNS es un protocolo de actualización de zonas DNS, usado tambien en bind 8 proporciona un sistema ideal para la actualización de servidores DNS sin tener que usar SDB, la actualización se realizara a traves del comando nsupdate, se necesita una clave para las actualizaciones que sera usada por este comando.
246 En la configuración hemos añadido un archivo que contine la clave de configuración, desde nsupdate podremos usar la misma clave y conseguir las actualizaciones, tenemos añadir o borrar direcciones:
248 \jump
249 \begin{rbox}[label=Añadiendo registro DNS]
250 # echo "update add nombre.chaosdimension.org 300 A dirección.ip"|/usr/sbin/nsupdate -k /home/keys/keys:getip.
251 \end{rbox}
252 \jump
253 \begin{rbox}[label=Eliminando registro DNS]
254 # echo "update delete nombre.chaosdimension.org"|/usr/sbin/nsupdate -k /home/keys/keys:getip.
255 \end{rbox}
256 \jump
258 \subsection{DNSSEC}
260 En el ejemplo anterior vemos un uso de dnssec, una infraestructura para la seguridad de bind, en este caso sencillo explicaremos la creacion tanto de dyndns-keyfile como la generacion de las claves que habra debajo del directorio /home/keys/keys, primero vamos al directorio y ejecutamos:
261 \jump
262 \begin{rbox}
263 # dnssec-keygen -a HMAC-MD5 -b 64 -n zone getip
264 Kgetip.+157+19720
265 \end{rbox}
266 \jump
268 Tendremos ahora dos archivo es ese directorio: Kgetip.+157+05353.key y Kgetip.+157+05353.private, del primero cogeremos la clave:
269 \jump
270 \begin{rbox}
271 # cat Kgetip.+157+05353.key
272 getip. IN KEY 256 3 157 7YUVBA4v/5I=
273 \end{rbox}
274 \jump
276 El valor \verb|7YUVBA4v/5I=| es que pondremos en el archivo dyndns-keyfile descrito anteriormente.
279 \subsection{Usando ldap2dns para sustituir al servidor Bind}
281 \section{El servidor Pdns}
283 \subsection{Usando Pdns-ldap como servidor de dominio}
286 \section{Configurar el dns para los dominios y servidores Kerberos}
288 \label{dns_kerberos}
289 \subsection{Bind9}
291 \jump
292 \begin{rbox}
293 _kerberos IN TXT "CHAOSDIMENSION.ORG"
294 _kerberos._tcp IN SRV 0 0 88 krb.chaosdimension.org.
295 _kerberos._udp IN SRV 0 0 88 krb.chaosdimension.org.
296 _kerberos-master._udp IN SRV 0 0 88 krb.chaosdimension.org.
297 _kerberos-adm._tcp IN SRV 0 0 749 krb.chaosdimension.org.
298 _kpasswd._udp IN SRV 0 0 464 krb.chaosdimension.org.
300 _ldap._tcp.chaosdimension.org IN SRV 0 0 389 ldap.chaosdimension.org
301 \end{rbox}
302 \jump
304 \subsection{Pdns}