Instalación del servidor DHCP

Para instalar los archivos necesarios de nuestro servidor DHCP podemos utilizar apt-get desde una consola de root:

// Instalación del servidor DHCP
sudo apt-get install dhcp3-server

De esta forma instalaríamos los programas necesarios para disponer de nuestro propio servidor DHCP.

Configuración del servidor DHCP

Tal y como se ha comentado anteriormente, un servidor DHCP proporciona direcciones IP y otros parámetros a los clientes DHCP de forma que su configuración se puede determinar de manera automática sin tener que hacerlo manualmente lo cual es especialmente útil cuando el número de PCs de nuestra red local es grande.

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:

  • Dirección IP
  • Máscara de subred
  • Dirección de difusión o broadcast
  • Puerta de enlace
  • Servidores DNS, etc...
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:
  • Tiempo de cesión por defecto
  • Tiempo de cesión máximo, y algunos parámetros más.
Esta información compone la configuración del servidor DHCP.


Archivo de configuración del servidor DHCP

Al igual que todas las aplicaciones en Linux, el servidor DHCP dispone de su propio archivo de configuración. Se trata del archivo:

// 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, continúa 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ón
subnet 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 adicionales
subnet 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.


Ejecución de ifconfig en Linux. La MAC es la HWaddr (Dirección Hardware) 

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 IP
host 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.


Archivo dhcpd.conf comentado

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 sistema
tail -n 20 /var/log/syslog

Arranque y parada manual del servidor DHCP

El servidor DHCP, al igual que todos los servicios en Debian, dispone de un script de arranque y parada en la carpeta /etc/init.d.

// Arrancar o reiniciar el servidor DHCP
sudo /etc/init.d/dhcp3-server restart

// Parar el servidor DHCP
sudo /etc/init.d/dhcp3-server stop

Arranque automático del servidor DHCP al iniciar el sistema

Para un arranque automático del servicio al iniciar el servidor, debemos crear los enlaces simbólicos correspondientes tal y como se indica en el apartado Trucos > Arranque automático de servicios al iniciar el sistema
Icono de iDevice

Problemas al iniciar el Servidor DHCP

Si el servidor DHCP da un error al intentar arrancarlo, casi siempre suele ser porque el rango de cesión está fuera de la red del servidor. El rango de cesión tiene que estar en la misma subred que el servidor.

Otro motivo por el que el servidor DHCP puede tener problemas para arrancar, es porque hay otro servicio similar en activo, como dnsmasq. En tal caso, habría que detener previamente dnsmasq con el comando /etc/init.d/dnsmasq stop.

No obstante, examinando las últimas líneas del archivo log del sistema quizás te dé alguna pista de lo que puede ocurrir. Para verlo, ejecuta el comando:

//Ver las últimas 20 líneas del archivo log del sistema
tail -n 20 /var/log/syslog

Pregunta Verdadero-Falso
Si nuestro servidor DHCP tiene la IP 192.168.1.2 y máscara 255.255.255 ¿podría ser el rango de cesión 172.16.1.20-40?
Verdadero Falso