Servidor DHCP en Ubuntu Server 22.04 LTS

Servidor DHCP

El DHCP (Dinamic Host Configuration Protocol) es un protocolo de red desarrollado en 1985 que permite la configuración automática de los parámetros de red de sus clientes.

Del lado del servidor nos encontramos con una base de datos de parámetros de red asignables que serán distribuidos entre los clientes de manera fija o dinámica, según cómo se configure el servidor DHCP.

Funcionamiento

El funcionamiento de un servidor DHCP cuenta con 4 fases que se esquematizan de la siguiente manera:

Estas 4 fases son paquetes que se envían entre los clientes y el servidor para distribuir parámetros de red a los clientes.

  • DHCPDISCOVER: Lo envía el cliente desde la dirección 0.0.0.0 a la dirección 255.255.255.255. Esta es la conocida difusión de broadcast en la cual el cliente contacta con todos los equipos de red para, en este caso, contactar con un servidor DHCP.
  • DHCPOFFER: Cuando un servidor DHCP escucha por el puerto 67 una petición DHCPDISCOVER, le devuelve al cliente emisor un paquete DHCPOFFER que contiene direcciones IP libres para asignar, la MAC del cliente y la máscara de subred.
  • DHCPREQUEST: El cliente hace su elección y manda un DHCPREQUEST para informar al servidor de los parámetros de red elegidos, que ya no estarán disponibles cuando el servidor haga un DHCPOFFER a otro cliente.
  • DHCPACK: Es el paquete final enviado desde el servidor, que confirma que la operación fue realizada exitosamente. En caso de que ocurriera un error durante este proceso, el servidor enviaría un DHCPNACK (no reconocido) y el cliente no tendría sus parámetros de red.

Prerrequisitos

Para montar y testear un servidor NAT se necesita una máquina servidor con dos tarjetas de red físicas y un cliente con una tarjeta de red. Si se está realizando como práctica en máquinas virtuales, el servidor necesitará una tarjeta configurada como «Adaptador puente» y otra como «Red interna», mientras que el cliente irá configurado como «Red interna»

Configuración de red

Vamos a configurar las dos tarjetas de red del servidor modificando el archivo .yaml que se encuentra dentro de /etc/netplan.

Dejar tabulaciones de 2 espacios como en la imagen. Sino, la sintaxis será errónea.

Este es un ejemplo de una configuración sencilla con la interfaz enp0s3 para dar conexión a internet y enp0s8 como red interna de nuestro servidor.

Una vez configurada la red hacemos un netplan try para comprobar la sintaxis. Si no es correcta, nos enseñará primera línea errónea. Si es correcta, nos dará la opción de aplicar los cambios pulsando ENTER.

Si hacemos un ifconfig(requiere tener las net tools instaladas > apt install net-tools) vemos los cambios aplicados.

Instalación y configuración de DHCP

Con permisos de root ejecutamos el comando apt-get install isc-dhcp-server.

Tras completar la instalación del servidor vamos a definir la interfaz de red sobre la que funcionará el servidor DHCP. Para este laboratorio de ejemplo será enp0s8, por lo que declaramos esta interfaz de IPv4 en /etc/default/isc-dhcp-server

Lo siguiente es configurar nuestro DHCP, para ello vamos a /etc/dhcp y editamos el fichero dhcpd.conf.

Podemos comprobar la sintaxis con dhcpd -t -cf /etc/dhcp/dhcpd.conf. De ser errónea nos mostrara el punto donde se encontró el error, este sería el output que se recibe si no hay fallos de sintaxis:

Tras esta configuración solo queda reiniciar el servidor y comprobar que se encuentra en buen estado (service isc-dhcp-server restart/ service isc-dhcp.server status)

Comprobación

En una máquina cliente Windows vamos a las propiedades de red IPv4 y marcamos la opción para que asigne los parámetros de red automáticamente, tras eso podemos hacer un ipconfig para verificar que nos ha dado una IP del rango que hemos definido en la configuración del DHCP.

Extras

Para ver la lista de hosts conectados al servidor dhcp podemos ejecutar watch dhcp-lease-list.

Con host podemos declarar directrices exclusivas para un cliente dentro del grupo de dhcpd.conf.

También se puede usar deny booting para excluir un equipo de darle direcciones IP.

Si se quiere tener un control total de los equipos que se conectan al dhcp se pueden agrupar hosts y utilizar deny-unknown-clients en la configuración de la subnet.


«
»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *