Lathack

Servicio DHCP en Linux

Servicio DHCP en Linux

 Introducción

El servicio DHCP en Linux (Protocolo de Configuración de Host Dinámico), como en cualquier sistema operativo, cumple la función de asignar dinámicamente direcciones IP a los hosts de la red. Parte de la información que asigna este servicio incluye el nombre de host, el nombre de dominio, la dirección IP de la puerta de enlace predeterminada (dirección Gateway) y el servidor DNS, etc. Podríamos decir que ayuda a los profresionales a asignar manualmente direcciones IP e información relacionada a cada uno de los sistemas cliente. Ya que generalmente, en la configuración del hogar o de una pequeña empresa, los enrutadores como los modem o router, cumplen la función de un servidor DHCP. Sin embargo, en un área grande (como una empresa), necesitamos configurar un servidor dedicado para proveer de direcciones a todos los hosts de la red.

En este apartado veremos cómo podemos configurar fácilmente el servicio DHCP en Linux y asignar direcciones IP a los clientes.

Función del Servicio DHCP

El servidor DHCP realiza una serie de procesos a medida que realiza sus tareas. Este proceso se denomina proceso DORA (Reconocimiento de solicitud de oferta de descubrimiento).

linux networks configuration dhcp

Veamos un poco más detallado este funcionamiento:

  1. Cuando un host es encendido necesita de una dirección IP. Por lo tanto, le pide al servidor DCHP (mediante broadcast), con el mensaje DHCP-Dicover

  2. El servidor identifica el mensaje del host, y le responde (mediante unicast) con un mensaje de oferta de dirección DCHP-Offert

  3. El cliente, luego de recibir dicho mensaje, le envía un mensaje de solicitud para obtener dicha dirección DHCP- Request

  4. Finalmente, el servidor confirma la solicitud para conceder la dirección IP a través del mensaje DHCP-ACK

Asignación de direcciones IP

Un servidor DHCP tiene distintas formas de asignar direcciones IP a un host. Las cuales veremos a continuación.

FORMA

FUNCIÓN

DESCRIPCIÓN

Automática

El servidor asigna una dirección permanente a un cliente.

Evita la configuración manual y permite administrar una dirección IP de forma centralizada.

Dinámica

El servidor presta una dirección durante un tiempo determinado.

El servidor puede reutilizar las direcciones que ya no se usan.

Manual

La dirección IP es asignada por el administrador de la red.

Sirve para eliminar errores por configuración de red en el propio cliente.

Configuración DHCP

Para haber obtenido el servicio DCHP en Linux, tuvimos que instalar el contenido del paquete ish-dhcp-server.

linux networks configuration dhcp

La configuración de este servidor la podemos en encontrar en el archivo /etc/dhcpd.conf cuya función está divida en parámetros y declaraciones. Los parámetros contienen las opciones de configuración de red que se enviarán al cliente. Es decir, establece el tipo de tarea y cómo debe llevarse a cabo. Algunos de estos empiezan con la palabra “option” que indica que son parámetros opcionales.

Las declaraciones describen la topología de la red y proporcionan direcciones para los hosts. Como también, aplican un grupo de parámetros o un grupo de declaraciones a estos.

Parámetros de configuración

PARÁMETROS

DESCRIPCIÓN

option domain-name-servers

Esta opción especifica la lista de servidores de DNS (saperados por comas) que deben utilizar los clientes. Pueden ser nombres como direcciones IP.

Ejemplo: option domain-name.servers 8.8.8.8 8.8.4.4

option subnet-mask:

Indica la máscara de subred que se le asigna al cliente.

Ejemplo: option subnet-mask 255.255.255.0

option broadcast-address

Indica la dirección de difusión que se le asigna al cliente.

Ejemplo: option broadcast-address 192.168.1.255

option ddns-update-style

Esta opción especifica si el servidor de DHCP debe intentar actualizar el servidor de DNS cuando se acepta o se libera un préstamo. En la implementación proporcionada por el ISC esta opción es obligatoria.

Ejemplo: option ddns-update-style none

option routers

Asigna una o varias puertas de enlace (Gateway) a los clientes separados por espacios.

Ejemplo: routers 192.168.10.1;

range

Las direcciones IP pertenecientes a este rango, incluyendo los extremos, se pueden entregar a los clientes.
Ejemplo: range 192.168.1.210 192.168.1.215

hardware-ethernet

Especifica la dirección MAC de una máquina, de tal forma que el servidor de DHCP pueda identificar a la máquina cuando realice una petición.

Ejemplo: hardware-ethernet 11:22:33:44:55 fixed-address

authoritative

Indica que el servidor está autorizado para asignar direcciones IP. Es decir, no tiene argumentos.

Ejemplo: autoritative

lease-file-name

Indica el nombre del fichero donde se almacenan los registros de concesiones. Por defecto este fichero es el /var/lib/dhcp/dhcpd.leases.

Ejemplo: lease-file-name /var/lib/dhcp/concesiones-dhcpd

Ejemplos sobre declaraciones

subnet: Indica una subred, contiene la subred junto a la máscara de subred. Ejemplo:

subnet 192.168.2.0 netmask 255.255.255.0 {

range 192.168.2.100 192.168.2.120;

range 192.168.2.200 192.168.2.220; }

host: Permite asignar parámetros a una máquina específica. Ejemplo:

host operador {

hardware-ethernet 90:6F:18:12:34:56;

hardware-ethernet 90::6F:18:AA:BB:CC;

fixed-address 192.168.60.133;

}

host usuario1 {

hardware-ethernet 90:6F:18:22:34:56;

fixed-address 192.168.60.166;

}

(El host operador recibirá la misma dirección, lo cual no es inconveniente si ambas interfaces están en redes ethernet distintas (por ejemplo una está en una red cableada y la otra en una red inalámbrica).)

group: Permite agrupar máquinas, subredes e incluso grupos. Ejemplo:

group {

option routers 192.168.1.1;

host usuario1 { hardware-ethernet 90:6F:18:22:34:56;

fixed-address 192.168.60.166;

}

host usuario2 { hardware-ethernet 90:6F:18:44:34:56;;

fixed-address 192.168.60.188;

}

}

Configuraciones secundarias

Las siguientes representan configuraciones secundarias, pero no menos importantes dentro del servicio dhcp en Linux.

Agente de Reenvío DHCP

Un DHCP Relay Agent (Agente de Reenvío DHCP) sirve para suministrar DHCP a subredes sin servidor DHCP. Por ejemplo, para derivar las peticiones que vienen por la interfaz enp0s8 al servidor dhcp 192.168.90.1, debería ejecutarse de la siguiente manera:

# /usr/sbin/dhcrelay 192.168.90.1 -i enp0s8

Registro de préstamos de IP

Cada préstamo se almacena en una base de datos ubicada en el archivo /var/lib/dhcp/dhcpd.leases. Cada registro tiene declaración lease, y la información que muestra es:

  • Fecha y hora de inicio y finalización del préstamo.

  • La dirección IP y física (mac address).

  • La útima fecha y hora de transacción del cliente.

Este archivo tiene que existir para que funcione correctamente el servicio. En el caso de que sea necesario reiniciarlo es conveniente cambiarle el nombre a «dhcpd.leases~» . La zona horaria del archivo utilizada es UTC.

DHCPv6

La implementación de DHCP de ISC también soporta direcciones IP versión 6 (IPv6). Este protocolo proporciona SLAAC (Stateless Address Autoconfiguration), haciendo la configuración mucho más fácil de administrar. En este caso el servidor proporciona la dirección IPv6 y otras opciones con la importante excepción de la puerta de enlace predeterminada. Los clientes DHCP envían mensajes RS (Router Solicitation) buscando algún servidor que responda con mensajes RA (Router Advertisement), el cual le proporcionará la puerta de enlace predeterminada. Este servicio lo ofrece otro software aparte en Linux llamado radvd .

Para activar su uso:

# /usr/sbin/dhcrelay -6 -l enp0s3 -u enp0s8

La opción -l indica la interfaz inferior (necesaria para recibir peticiones DHCPv6). La superior necesaria para enviar peticiones DHCPv6 a servidores DHCP está indicada por -u.

Errores Frecuentes

Cuando instalamos el servicio DHCP en Linux, o cualquier otro sistema, suele haber un error principal que es la inactividad del servicio (Active: failed), como vemos a continuación:

# systemctl status ish-dhcp-server.service

linux networks configuration dhcp

Incluso podemos verificar este error a través de los logs del sistema:

# tail /var/log/syslog

linux networks configuration dhcp

Esto se debe a que cuando es instalado el servicio, este quiere funcionar automáticamente. Sin embargo, es necesario configurar ciertos parámetros y ajustes para lograr que funcione. Miremos a continuación el archivo /etc/default/ish-dhcp-server donde están instaladas las configuraciones por defecto del servicio.

Como podemos ver, la penúltima línea INTERFACESv4=”” se encuentra sin ningún valor. Aquí hace falta poner nuestra interfaz de red, la cual vamos a saber tecleando el comando “ifconfig” o «ip a«. Y no solo encontraremos nuestra interfaz de red, sino también nuestra dirección ip y netmask que usaremos más adelante.

Una vez encontrada nuestra interfaz, procedemos a agregar dicha línea usando un editor de texto como VIM, NANO, etc..

linux networks configuration dhcp

A continuación, nos dirigimos al archivo /etc/dhcpd.conf a configurar las líneas 6 y 35 con la información que corresponde. Primero comentamos los dns a utilizar, tanto el nombre como los números que se muestran en la línea 6. Aquí puede ser cualquier número de servidor que corresponda. Como ejemplo hemos puesto el dns de google.

Luego comentamos la configuración de la línea 35 del mismo archivo con respecto a la información de nuestra dirección de red, netmask (máscara de red) y el rango de direcciones ( el cual elegimos personalmente que sea desde la 50 hasta la 60) y por último nuestra dirección de gateway o puerta de enlace (el cual lo sabremos tecleando route –n)

linux networks configuration dhcp

Finalmente reiniciamos el sistema tecleando # systemctl restart ish-dhcp-server.service para que pueda ponerse en funcionamiento (también se recomienda reiniciar el equipo). A continuación, procedemos a ver el estado de dicho servicio tecleando # systemctl status ish-dhcp-server.service para ver si hemos tenido éxito en nuestras configuraciones.

linux networks configuration dhcp

Como podemos ver, se encuentra en correcto funcionamiento nuestro servicio de DHCP.

Deja una respuesta

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

1 × 3 =

Lathack
Scroll al inicio