DHCP (Dynamic Host Configuration Protocol) es el protocolo de red que permite a los clientes de una LAN obtener sus parámetros de configuración IP automáticamente (dirección IP, puerta de enlace por defecto, servidores DNS, principalmente). Un servidor posee una lista de direcciones IP disponibles, las cuales asigna a los clientes conforme estos se conectan a la red, sabiendo en todo momento quién posee cada dirección (mapeo de dirección de red física, MAC, a dirección de red de Internet, IP, capa 3) y cuánto tiempo la ha tenido.

En este breve artículo voy a explicar cómo configurar rápidamente un servidor DHCP en Debian.



En Debian y derivados, el paquete isc-dhcp-server implementa un servidor DHCP. Su instalación en simple:

# apt-get install isc-dhcp-server

Supongamos que nuestro servidor posee una interfaz de red (eth1) conectada a una red local (LAN, Local Area Network) configurada con la dirección IP 10.10.10.1, y deseamos entregar direcciones IP para la subred 10.10.10.0/24 en dicha LAN:

root@debian:~# ifconfig eth1
eth0      Link encap:Ethernet  HWaddr 1f:23:4d:a6:a1:37  
          inet addr:10.10.10.1  Bcast:10.10.10.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3015163 errors:0 dropped:0 overruns:0 frame:0
          TX packets:181109 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:316249708 (301.5 MiB)  TX bytes:25463972 (24.2 MiB)

Además, nuestro servidor funciona como puerta de enlace (router) para dicha subred (posee otra interfaz conectada directamente a Internet).

Configuración del servicio isc-dhcp-server

El primer paso consiste en editar el archivo /etc/default/isc-dhcp-server para definir sobre cuales interfaces de red escuchar y entregar direcciones IP. Editar la variable INTERFACES para que sólo escuche y entregue direcciones sobre la interfaz deseada (eth1):

INTERFACES="eth1"

Luego editar el archivo de configuración del servicio etc/dhcp/dhcpd.conf. La siguiente sección define configuración DHCP para la subred 10.10.10.0/24:

subnet 10.10.10.0 netmask 255.255.255.0 {
  range 10.10.10.100 10.10.10.200;
  option domain-name-servers 10.10.11.2, 10.10.11.3;
  option domain-name "linuxito.com";
  option routers 10.10.10.1;
  option broadcast-address 10.10.10.255;
  default-lease-time 600;
  max-lease-time 7200;
}

La variable range define el rango de direcciones dinámicas disponibles a los clientes, en este ejemplo desde la dirección .100 hasta la dirección .200 (inclusive). De esta forma los clientes sólo tendrán direcciones en el rango desde 10.10.10.100 hasta 10.10.10.200. La opción domain-name-servers indica las direcciones IP de los servidores de dominio (DNS), los cuales no necesariamente se encuentran en la misma subred. En este caso se trata de una red conectada a Internet, por lo cual es importante, además de configurar las direcciones IP de los servidores de dominio, configurar correctamente la dirección de la puerta de enlace (host por donde se sale a Internet u otras redes). Esto se hace a través de la opción routers. El resto de las configuraciones son triviales: nombre de dominio, dirección de broadcast, tiempos de lease (en segundos).

Lógicamente, es necesario que la interfaz eth1 tenga configurada de forma estática una dirección IP perteneciente a la subred 10.10.10.0/24 para poder entregar direcciones dinámicas en la misma. De lo contrario el servicio no funciona.

Finalmente, reiniciar el servicio:

# service isc-dhcp-server restart

Verificar el correcto funcionamiento conectando un cliente a la LAN. Es posible utilizar la herramienta dhclient para diagnosticar problemas.

Referencias

DHCP_Server - Debian Wiki

Dynamic Host Configuration Protocol

dhcpd.conf


Tal vez pueda interesarte


Compartí este artículo