La administración de nodos de red puede ser una tarea ardua y que consume la mayor parte del tiempo, agregar nodos al sistema implica verificar varios factores para evitar conflictos con los equipos existentes, configurar el nuevo nodo a fin de de que pueda comunicarse y registrar los cambios realizados para tenerlos en cuenta la próxima vez. Este método es funcional cuando la red es simple, pero una vez que el número de equipos hace imposible el manejo manual de las configuraciones, tenemos a nuestra disposición herramientas que nos pueden ayudar en la automatización del manejo de la red: los servidores DHCP, por sus siglas en inglés Direct Host Configuration Protocol. La función de un servidor DHCP es la de asignar nombres, direcciones IP, las ubicaciones de los servidores de nombres en la red y de la ruta de comunicación hacia el exterior mientras lleva un registro de las operaciones de asignación realizadas para cada equipo, lo que nos permite la comodidad de conectar solamente el equipo a la red para que este configurado y pueda comunicarse.
El servidor DHCP en este ejemplo es el de ISC, Internet software Consortium, la versión contenida en los ports de FreeBSD 4.6-STABLE. La instalación es bastante simple, solo tenemos que ubicarnos en nuestro directorio de ports del sistema y realizar un make install como root:
infiernos# cd /usr/ports/net/isc-dhcp3
infiernos# make install
Esta acción instalará los binarios del programa y los archivos de configuración.
Los archivos de configuración están localizados en el directorio /usr/local/etc, pero antes de modificarlos vamos a plantear los datos de un caso imaginario. Vamos a dar servicio de DHCP a 200 hosts, nuestra red tiene los siguientes datos:
Dominio: freebsd.org.mx
Red: 10.77.4.0
Rango IPs a asignar: de 10.77.4.50 a 10.77.4.250
Servidor de nombres: 10.77.4.10, 10.77.4.11, 10.77.4.15
Gateway: 10.77.4.254
Debemos crear un archivo dhcpd.conf para que contenga las opciones de configuración que necesitamos:
infiernos# cd /usr/local/etc
infiernos# touch dhcpd.conf
infiernos# ee dhcpd.conf
Nuestro archivo de configuración tendría algo como esto:
######### dhcpd.conf #########
#
option domain-name "freebsd.org.mx";
option domain-name-servers 10.77.4.10, 10.77.4.11, 10.77.4.15;
#
default-lease-time 7200;
max-lease-time 32400;
#
authoritative;
ddns-update-style none;
#
subnet 10.77.4.0 netmask 255.255.255.0 {
range 10.77.4.50 10.77.4.250;
option routers 10.77.4.254;
option broadcast-address 10.77.4.255;
}
#
#EOF
option domain-name, esta opción es autoexplicatoria, nos sirve para especificar el nombre de dominio de la red.
option domain-name-servers, en esta sección se declaran las direcciones de los servidores de nombres en la red.
default-lease-time, el tiempo concedido en segundos a los hosts para retener la configuración proporcionada por el servidor.
max-lease-time, el tiempo máximo concedido en segundos a los hosts para retener la configuración proporcionada por el servidor.
authoritative, este servidor DHCP es el servidor principal para este segmento de red.
ddns-update-style, el modo de interacción con los servidores de nombres declarados, en este caso no se permite la actualización en forma automática de los nombres de hosts asignados dinámicamente.
subnet, la red o subred que utilizaremos, las opciones contenidas en ella son aplicables a esta opción solamente.
range, el rango de IPs disponibles para repartir a los equipos clientes.
routers, la dirección del router de salida para la red.
broadcast-address, la dirección de broadcast de los equipos.
Con esta configuracion basica podemos iniciar el servidor DHCP
infiernos# /usr/local/etc/rc.d/isc-dhcpd.sh.sample start
Internet Software Consortium DHCP Server V3.0.1rc1
Copyright 1995-2001 Internet Software Consortium.
All rights reserved.
For info, please visit http://www.isc.org/products/DHCP
Wrote 3 leases to leases file.
Listening on BPF/xl1/00:10:5a:ab:9b:ab/10.77.4.0/24
Sending on BPF/xl1/00:10:5a:ab:9b:ab/10.77.4.0/24
Sending on Socket/fallback/fallback-net
Para que el servicio inicie de manera automática al momento de arranque, hay que renombrar el archivo isc-dhcpd.sh.sample y asegurarse que tenga permisos de ejecución.
infiernos# mv isc-dhcpd.sh.sample isc-dhcpd.sh
infiernos# chmod 755 isc-dhcpd.sh
Una vez que el servidor ha cargado crea un archivo de datos para llevar el control de las asignaciones de las direcciones IP en /var/db/dhcpd.leases con los datos de las terminales y la hora de asignación.
El servidor DHCP ya está funcionando, pero que tal si queremos que ciertos equipos reciban siempre la misma configuración de red?, para esto podemos utilizar una declaración como esta:
host c-tre-p0 {
hardware ethernet 05:01:07:26:c0:a5;
fixed-address 10.77.4.47;
}
host hirvientes {
hardware ethernet 08:00:04:70:b0:c6;
fixed-address 10.77.4.48;
}
Con host podemos declarar la IP que se le asignará al equipo que tenga la dirección de hardware 05:01:07:26:c0:a5, pero las directivas listadas anteriormente tambien pueden ser utilizadas para declarar diferentes servidores de nombres o de router para este host. Solo hay que tener cuidado de no poner direcciones IP que esten en el rango de IPs declarado como dinámicas.
Otra de las opciones que podemos combinar con la identificacion de hosts es la posibilidad de no admitir hosts desconocidos, o de limitarlos en las opciones que se les pueden asignar desde el servidor, por ejemplo:
host tre01 { hardware ethernet 0:c0:c3:49:2b:57; }
host tre02 { hardware ethernet 0:c0:c3:80:fc:32; }
host tre03 { hardware ethernet 0:c0:c3:22:46:81; }
pool {
option domain-name-servers ns1.freebsd.org.mx, ns2.freebsd.org.mx;
max-lease-time 28800;
range 10.77.4.50 10.77.4.100;
optio routers 10.77.4.254;
deny unknown clients;
}
pool {
option domain-name-servers 10.77.4.252;
max-lease-time 600;
range 10.77.4.101 10.77.4.115;
allow unknown clients;
}
La declaración de los equipos con la directiva host nos permite utilizar una directiva pool para discernir entre los equipos conocidos para aplicar diferentes IPs, esto combinado con restricciones de firewall pueden ser de mucha ayuda con la seguridad en la red.
Los servicios de DHCP son muy útiles cuando se maneja grán cantidad de equipos, pueden ahorrarnos muchas horas de trabajo y su instalación no es complicada. Aunque si vamos a depender del DHCP activamente, lo más recomendable es habilitar un servidor secundario para el segmento o configurar la opción de failover entre servidores. Les invito a que lean el handbook y las páginas del manual en línea del sistema sobre DHCP. Dudas, comentarios y sugerencias:
acosta@freebsd.org.mx