Un Servidor DHCP (Dynamic Host Configuration Protocol – Protocolo de Configuración Dinámica de Equipos) puede ser una excelente solución tanto para grandes como pequeños entornos. Este tipo de servidores nos permiten definir rangos de direcciones IP para los equipos clientes que se conecten a nuestra organización y de este modo administrar de forma centralizada todas las direcciones IP del dominio.
De este modo tendremos plena confianza en que todos los equipos y dispositivos que cuelguen de nuestra red tendrán de forma automática su dirección IP, evitando ir a cada máquina a definir la dirección de forma manual.
Además de la dirección IP mediante un servidor DHCP proveemos los siguientes parámetros:
- Máscara de subred
- Dirección IP
- Puerta de enlace
- Servidores DNS, entre otros.
Para hacer uso de este servidor necesitaremos trabajar con el protocolo DHCP. Este protocolo de red se basa en un modelo cliente-servidor. Para ponernos en situación, donde un dispositivo (un portátil, móvil, etc.) solicita en el momento de conectarse a una red la configuración IP a un servidor DHCP a través de los puertos UDP 67 y 68 (para IPv6, los puertos 546 y 547), que por su parte consulta en una base de datos las direcciones y parámetros de red asignables antes de dar una respuesta.
Habilitar DHCP
Administrar nuestro propio Servidor DHCP no es tarea complicada pero requiere ciertos conocimientos previos. Cuando estamos trabajando con entornos DHCP es frecuente conocer estos términos:
- Ámbito DHCP: Lo definiremos como el grupo administrativo de usuarios o equipos de una subred.
- Rango DHCP: No debemos confundirlo con el anterior. Por rango entenderemos un grupo de direcciones IP para una función determinada dentro de la organización.
- Concesión: Este parámetro establece el tiempo en el cual un equipo puede usar de forma activa una dirección IP en el dominio o grupo de trabajo.
- Reserva de direcciones IP: Si fuera necesario, siempre podemos reservar una o diversas direcciones IP para fines administrativos.
Para instalar el rol DHCP en nuestro servidor podemos seguir diferentes guías y utilizar sistemas tan variados como MS/WIndows o GNU/Linux. Para este artículo vamos a instalar un Servidor DHCP y configurarlo en Ubuntu Server 18.04, pero el proceso es bastante similar para cualquier otra distribución GNU/Linux.
Para empezar, en primer paso será instalar el servicio DHCP en nuestro Linux server con “sudo apt install isc-dhcp-server” el proceso no debería llevar más de unos pocos minutos dependiendo de la velocidad de nuestra conexión de Internet para descargar el paquete y dependencias necesarios.
Configurar DHCP
Ahora vamos a editar el fichero de configuración de nuestro servidor DHCP con sudo nano /etc/dhcp/dhcpd.conf
y lo dejamos así.
Por supuesto esto es solo un ejemplo. La idea es poder mostrar los conceptos que antes comentamos. Por ejemplo, el valor de Concesión (Lease-Time), el rango y ámbito, así como la reserva de direcciones IP para determinadas máquinas presentes en nuestra red, por ejemplo otro servidor.
Claramente, esto podemos modificarlo a nuestro gusto según las necesidades de nuestra red. Pero no te lances a modificar valores sin más, lo mejor es que planifiques un poco tu red. Para ello pasar un tiempo con papel y lápiz siempre es buena idea.
El siguiente paso es comprobar que desde un cliente Windows todo funciona. Para ello debemos hacer ipconfig /release
y luego ipconfig /renew
desde el command promt. Estos comandos lo que hacen es liberar la configuración Ip y solicitar una nueva configuración.
Si todo ha ido bien deberíamos tener un resultado como el que sigue en las siguientes capturas de pantalla:
Aunque el proceso parece rápido, en realidad es consecuencia de llevar con éxito cuatro pasos consecutivos:
- Difusión amplia o broadcast: El cliente envía un paquete DHCPDISCOVER, de modo que intenta localizar los servidores DHCP disponibles y así continuar con la petición.
- Oferta: Los servidores DHCP presentes en la red se encuentran a la escucha de peticiones a través del puerto 67. En cuanto detectan la petición de un cliente envían un paquete que contiene una dirección IP libre.
- Solicitud: El cliente DHCP que recibe el paquete contacta con el servidor correspondiente con DHCPREQUEST. De este modo, confirma al servidor que acepta los parámetros asignados anteriormente.
- Confirmación: Para finalizar, el servidor confirma los parámetros TCP/IP y los guarda en la base de datos del servidor junto con la dirección MAC del cliente.
Cómo solucionar los errores más comunes con DHCP
No todas las configuraciones funcionan tan bien como nos gustaría. Los clientes DHCP proporcionan de manera automática sus tarjetas de red (NICs) y direcciones IP, que comienzan con 169.254.xx hasta que puedan entrar en contacto con el servidor DHCP. Cuando se logra el contacto se reconfiguran las direcciones IP a los valores proporcionados por el servidor DHCP. Por lo tanto, una interfaz con una dirección 169.254.xx significa que hay un fallo en la comunicación con el servidor DHCP.
¿Qué puede estar pasando? Existen múltiples causas de diferentes problemas y resulta prácticamente muy difícil listarlos todos. En la mayoría de los casos, la falta de un enlace es debida a un problema en el cable, tarjeta de red o un problema en la configuración. Por ejemplo:
- Los cables no funcionan.
- El switch o router al que está conectado el servidor cuenta con su propio servicio DHCP.
- Configuración incorrecta en nuestro servidor DHCP
Pero existen otros motivos:
- Colisiones: Cuando la tarjeta NIC se detecta a sí misma y otro servidor en la LAN trata de transmitir datos al mismo tiempo. Las colisiones se pueden esperar como una parte normal de la operación de Ethernet y están típicamente por debajo del 0,1% de todas las tramas enviadas (frames sent). En general, las altas tasas de error son probablemente causadas por tarjetas de red NIC defectuosas o cables mal terminados.
- CRC: Cuando las tramas son enviadas pero se corrompen en el tránsito. La presencia de errores CRC pero sin muchas colisiones, por lo general es una indicación de que existe ruido eléctrico. Hay que verificar el tipo correcto de cable, que el cableado no se encuentre dañado y que los conectores estén bien fijados.
- Trama (Frame errors): Un CRC incorrecto y un número no entero de bytes se reciben. Esto suele ser el resultado de colisiones o porque un dispositivo Ethernet se encuentra defectuoso.
- Firewall: Asegúrate antes de probar tu configuración DHCP que esta no incumple las reglas vigentes del firewall.
- Descartado esto, algunos problemas del servidor DHCP pueden ser la causa de nuestros problemas, por lo que hay algunas cosas a tener en cuenta.
Por ejemplo, en el archivo de configuración principal /etc/dhcp/dhcpd.conf
asegúrate de finalizar todas tus opciones con un punto y coma ;
.
Puede parecer una tontería, pero si esto sucede el servicio arroja un error cuando verifica el archivo de configuración. Además, asegúrate de probar también el servidor DHCP después de que las reglas del firewall estén vigentes.
Otra aproximación a la resolución de problemas del cliente está en consultar el archivo de arrendamiento del cliente. Este archivo es proporcionado por el servidor DHCP y contiene toda la información de arrendamiento sobre cada cliente que ha obtenido una dirección IP del servidor.
Cuando tiene un cliente que tiene una dirección DHCP, se puede ver el archivo de arrendamientos utilizando lo siguiente:
# cat /var/lib/dhcpd/dhcpd.leases
Ahí se puede consultar la información asignada, así como cualquier mensaje de error relacionado, y a partir de ahí buscar la solución al problema. Claro que esto es fácil de decir, en el mundo real todos sabemos que esto lleva tiempo y siempre es necesario disponer de los conocimientos adecuados para poder dar con la solución. A fin de cuentas, cada red es diferente.