El servidor DHCP deberá saber qué rangos de direcciones IP puede 'alquilar' y qué parámetros adicionales (puerta de enlace, servidores DNS, etc...) debe proporcionar a los clientes para que la configuración de los mismos sea completa y sea la deseada.
Una configuración TCP/IP mínima debe contener al menos la dirección IP y la máscara de subred, por lo tanto, esos son los dos mínimos datos que un servidor DHCP puede proporcionar a un cliente, no obstante, un servidor DHCP suele proporcionar muchos más parámetros:
Además, existen una serie de parámetros que definen las condiciones del 'alquiler' o cesión de la configuración IP hacia un cliente como son:
Esta información compone la configuración del servidor DHCP.
// Archivo de configuración del servidor DHCP/etc/dhcp3/dhcpd.conf
Este archivo de configuración consta de una primera parte principal donde se especifican los parámetros generales que definen el 'alquiler' y los parámetros adicionales que se proporcionarán al cliente.
El resto del archivo de configuración consta de una serie de secciones que especifican principalmente rangos de direcciones IPs que serán cedidas a los clientes que lo soliciten (sección subnet) y especificaciones concretas de equipos (sección host). Los parámetros de las secciones deberán ir entre llaves '{' y '}'.
Los valores de los parámetros especificados al principio del archivo se aplican como valores por defecto al resto de secciones aunque si dentro de una sección se redefine alguno de los parámetros, se aplicará éste ignorándose el valor por defecto.
Los rangos de direcciones IP se especifican en secciones que empiezan con la palabra clave 'subnet' seguido de la dirección de red de la subred, continua con la palabra 'netmask' seguido de la máscara de red. A continuación estará la lista de parámetros para dicha sección encerrados entre llaves.
Ejemplo, supongamos que en nuestra red local disponemos de direcciones pertenecientes a la subred 192.168.1.0/24 (/24 significa máscara de subred 255.255.255.0 ó lo que serían 24 'unos' en binario) y deseamos que nuestro servidor DHCP alquile direcciones del rango comprendido entre la dirección 192.168.1.60 y 192.168.1.90. La sección subnet que debemos crear será:
// Rango de cesiónsubnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.60 192.168.1.90;
}
Atención: El rango de cesión debe pertenecer a la misma subred a la que pertenece la IP del servidor, es necesario para que los clientes puedan comunicarse con el servidor DHCP para procesar las renovaciones. Ejemplo, si un servidor tiene la IP 192.168.1.1/24, no puede ceder direcciones del rango 10.0.0.0/8 porque dicho rango está fuera del alcance de la subred del servidor.
Si además de proporcionar al cliente la dirección IP y la máscara deseamos que le proporcione también la dirección de la puerta de enlace y las direcciones de dos servidores DNS para que pueda navegar por Internet, la sección subnet que debemos crear será:
// Rango de cesión y parámetros adicionalessubnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.254;
option domain-name-servers 80.58.0.33, 80.58.32.97;
range 192.168.1.60 192.168.1.90;
}
Existe la posibilidad de establecer una configuración concreta a un cliente concreto identificándolo por la dirección MAC de su tarjeta de red. Recordemos que la dirección MAC (MAC address) es un número único, formado por 6 octetos, grabado en la memoria ROM de las tarjetas de red ethernet y viene fijado de fábrica. Se suelen escribir los 6 octetos en hexadecimal separados por dos puntos ':'. Todas las tarjetas de red tienen una dirección MAC única en el mundo. Es como un número de serie. Los tres primeros octetos indican el fabricante y los tres siguientes el número de serie en fabricación. En Linux se puede averiguar la dirección MAC mediante el comando ifconfig. En Windows 2000 y XP se puede utilizar el comando ipconfig y en Windows 95 y 98 el comando winipcfg.
Para establecer una configuración de equipo es necesario crear una sección host. Ejemplo, si deseamos que el cliente cuya dirección MAC sea 00:0c:29:c9:46:80 se configure siempre (reserva de dirección IP) con la dirección IP 192.168.1.50 y puerta de enlace 192.168.1.254, que su nombre de dominio sea "ieslapaloma.com" y el servidor de nombres netbios sea "192.168.1.250" la sección host que debemos crear será:
// Crear una reserva de dirección IPhost Profesor5 {
hardware ethernet 00:0c:29:c9:46:80;
fixed-address 192.168.1.50;
option routers 192.168.1.254;
option domain.name "ieslapaloma.com";
option netbios-name-servers 192.168.1.250;
}
Cuando el PC cuya dirección MAC sea '00:0c:29:c9:46:80' solicite una dirección IP al servidor DHCP, recibirá la 192.168.1.50.
A continuación mostramos un sencillo archivo dhcpd.conf comentado línea por línea: (Todas las líneas que comienzan por almoadilla (#) son líneas de comentarios y son ignoradas por el servidor dhcp. Todas las líneas que especifican parámetros deben terminar en punto y coma ';')
// Ejemplo de archivo dhcp.conf# Sample configuration file for ISC dhcpd for Debian
# $Id: dhcpd.conf,v 1.4.2.2 2002/07/10 03:50:33 peloy Exp $
# Opciones de cliente y de dhcp aplicables por defecto a todas las secciones
# Estas opciones pueden ser sobreescritas por otras en cada sección
option domain-name-servers 195.53.123.57; # DNS para los clientes (atenea)
option domain-name "ieslapaloma.com"; # Nombre de dominio para los clientes
option subnet-mask 255.255.255.0; # Máscara por defecto para los clientes
default-lease-time 600; # Tiempo en segundos del 'alquiler'
max-lease-time 7200; # Máximo tiempo en segundos que durará el 'alquiler'
# Especificación de un rango
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.60 192.168.1.80; # Rango de la 60 a la 80 inclusive
option broadcast-address 192.168.1.255; # Dirección de difusión
option routers 192.168.1.254; # Puerta de enlace
option domain-name-servers 80.58.0.33; # DNS (ej: el de telefónica)
default-lease-time 6000; # Tiempo
}
# Configuración particular para un equipo
host aula5pc6 {
hardware ethernet 00:0c:29:1e:88:1d; # Dirección MAC en cuestión
fixed-address 192.168.1.59; # IP a asignar (siempre la misma)
}
Nota: Si nuestro servidor tiene varias interfaces de red, será necesario indicar la interfaz o interfaces por las cuales se va a ofrecer el servicio DHCP. Para ello, tendremos que editar el archivo /etc/default/dhcp3-server. Ejemplo, si nuestro servidor dispone de la interfaz eth0 y la interfaz eth1, y queremos ofrecer el servicio por ambas interfaces, tendremos que editar el archivo /etc/default/dhcp3-server:
//Ofrecer DHCP por eth0 y eth1 //Editar /etc/default/dhcp3-server y añadir parámetro INTERFACES:INTERFACES="eth0 eth1"
Para otras opciones de configuración del servidor DHCP, se puede consultar la página del manual de dhcpd.conf:
// Página del manual de la configuración del servidor DHCP$ man dhcpd.conf
Si el servidor DHCP da un error al intentar arrancarlo, casi siempre es porque el rango de cesión está en un rango diferente de la dirección IP del servidor. No obstante, examinando las últimas líneas del archivo log del sistema quizás te dé alguna pista de lo que puede ocurrir. Para ello ejecuta el comando
//Ver las últimas 20 líneas del archivo log del sistematail -n 20 /var/log/syslog