Tabla de Contenidos
210.1 DHCP configuration
Pertenece a Topic 210: Network Client Management
- Weight: 2
- Description: Candidates should be able to configure a DHCP server. This objective includes setting default and per client options, adding static hosts and BOOTP hosts. Also included is configuring a DHCP relay agent and maintaining the DHCP server.
- Key Knowledge Areas:
- DHCP configuration files, terms and utilities
- Subnet and dynamically-allocated range setup
- Awareness of DHCPv6 and IPv6 Router Advertisements
- Terms and Utilities:
dhcpd.confdhcpd.leases- DHCP Log messages in syslog or systemd journal
arpdhcpdradvdradvd.conf
DHCP
DHCP (Dynamic Host Configuration Protocol) es un protocolo cliente/servidor que tiene como objetivo asignar automáticamente una dirección IP así como los parámetros funcionales a los equipos de la red. Todo equipo que no pueda configurarse estáticamente por un administrador de red usará este protocolo.
Es el escenario típico de una vivienda con conexión a Internet: el router de la operadora tiene un servidor DHCP y cuando un dispositivo de la red del hogar se conecta a él, este le asigna una configuración de red.
Proceso de funcionamiento de DHCP:
- Los clientes DHCP generan peticiones broadcast que envían por la red con la esperanza de encontrar un servidor DHCP (DHCPDISCOVER).
- El servidor DHCP recibe la petición y propone al cliente una dirección y una configuración de red (DHCPOFFER).
- El cliente envía un paquete broadcast aceptando la oferta (DHCPREQUEST).
- El servidor DHCP realiza la asignación y envía un acuse de recibo (DHCPACK).
Servidor DHCP
El servicio DHCP más extendido en los sistemas Linux, es el servicio DHCP del ISC (Internet System Consortium).
Antes de hablar de la configuración de un servidor DHCP, debemos instalarlo. Dicho proceso podemos realizarlo utilizando la paquetería existente, dependiendo de la distribución:
Debian:
apt-get install isc-dhcp-server
RedHat
yum install dhcp
En general, cuando instalamos algún servicio, se pone a funcionar automáticamente. En este caso, esto no es así, dará error. El servicio DHCP es crítico porque podemos estar dentro de una red donde ya exista un servidor DHCP por lo que habría conflicos de red, así que por precaución el servidor DHCP no arranca correctamente ya que necesita finalizar cierta configuración.
El servidor DHCP basa en:
- Un daemon llamado:
dhpcd(RedHat),isc-dhcp-server(Debian) - Fichero de configuración
/etc/dhcp/dhcpd.conf, donde podemos encontrar las directivas de funcionamiento, las opciones generales del servidor y la declaración de los recursos que se asignarán.
Configuración DHCP
La configuración de DHCP es a base de directivas que se van añadiendo en los ficheros
Directivas principales del servidor
default-lease-time <duracion>; authoritative; log-facility <destino>
Como vemos, unas son con el nombre de la directiva tal cual y otras necesitan un valor.
default-lease-time <duracion>: indica la duración de la concesión DHCP en segundos.authoritative: (Opcional) Todo cliente que solicite la renovación de una dirección fuera de rango deberá renunciar a ella.log-facility <destino>: administración de los registros: envía los eventos a la “facility” destino del servidorsyslog. En el dominio desyslog, lasfacilitiesson los diferentes servicios de sistema.
Las directivas pueden ser globales (afectan a todo el servidor) o que afecten a cierta subred (cierto rango).
Declaración de opciones transmitidas a los clientes
option domain-name <sufijo>; option domain-name-servers <servidores_dns>; option nis-domain <dominio_nis>; option nis-servers <servidores_nis>;
sufijo: sufijo DNS para los clientes (dominio o grupo de trabajo).servidores_dns: servidor DNS utilizado para los clientes. Si hay varios, deberán separarse por comas. Esta información es la que se almacenará en el fichero/etc/resolv.confde los clientes Linux.dominio_nis: cada vez más en desuso. Dominio NIS para los clientes.servidores_nis: cada vez más en desuso. Servidor NIS utilizado por los clientes. Si hay varios, deberán separarse por comas.
Declaración de una subred
Es necesario definir una subred a la que pertenecerá la configuración del red que entregará el servidor DHCP.
Estructura de declaración:
subnet <red> netmask <máscara> {
range <inicio> <fin>;
option routers <router>;
}
| Parámetro | Descripción |
|---|---|
red | La dirección de red en la que se encuentran las direcciones que se asignarán. |
máscara | Máscara asociada a la red especificada. |
inicio | Definición del rango de direcciones que se ofrecerá a los clientes. La primera dirección del rango. |
fin | Definición del rango de direcciones que se ofrecerá a los clientes. La última dirección del rango. |
router | La puerta de enlace (gateway) predeterminada asociada a las direcciones propuestas. No es obligatorio ya que podemos tener una red que no necesite salir a Internet. |
Ejemplo:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.20 192.168.1.70;
option routers 192.168.1.1;
}
El rango de IPs no tiene por qué abarcar toda la subred. Si tenemos servidores en la red es probable que prefiramos que esos tengan una configuración estática de red.
En la imagen se puede ver la declaración de una subred que gestionará el servidor DHCP. Los clientes que le pregunten recibirán IPs desde la dirección 192.168.1.100 hasta la 192.168.1.150 indicando el gateway 192.168.1.1 que conectará la subred a Internet y habrá un servidor DNS interno (192.168.1.10) y otro externo (85.86.87.88).
Para finalizar la configuración de DHCP, en Debian hay que editar el fichero /etc/default/isc-dhcp-server y darle un valor correcto a la variable INTERFACES:
INTERFACES="eth0"
Ahí indicamos la interfaz de red por la que haremos la configuración de red a través del servidor DHCP. Tras guardar esa modificación y reiniciar el servidor DHCP, el servicio comenzará a funcionar correctamente.
Declaración de una máquina
Una parte interesante de DHCP es que algunos clientes tengan la misma configuración de red. Aunque esto se puede hacer en el cliente, es otra de las posibilidades que da un servidor DHCP.
Estructura:
host <máquina> {
hardware ethernet <dirección_mac>;
fixed-address <dirección_ip>;
option routers <router>;
option domain-name <sufijo>;
option domain-name-servers <servidores_dns>;
}
| Parámetro | Descripción |
|---|---|
máquina | Declaración de parámetros para un host. Si la identificación se realiza mediante la dirección MAC (hardware ethernet), el nombre máquina carece de importancia. |
dirección_mac | Dirección MAC del host que se configura. Es como el servidor DHCP identificará ese host. |
dirección_ip | Dirección IP que se le asignará al host. |
Para saber la dirección MAC de una máquina Linux podemos usar el comando ifconfig o ip a. En el caso de las impresoras, puede venir indicada en una pegatina o sacando una impresión con sus datos.
Visualización de las concesiones DHCP
El servidor DHCP conserva la información de cada una de las concesiones asignadas (leases) en el archivo dhcpd.leases que se encuentra en el directorio /var/lib/dhcp/.
lease {
interface "eth0";
fixed-address 192.168.1.51;
option subnet-mask 255.255.255.0;
option routers 192.168.1.254;
option dhcp-lease-time 864000;
option dhcp-message-type 5;
option domain-name-servers 194.2.0.20,194.2.0.50;
option dhcp-server-identifier 192.168.1.1;
renew 6 2021/07/10 14:55:34;
rebind 3 2021/07/14 14:33:58;
expire 4 2021/07/15 14:33:58;
}
Configuración del cliente
dhclient
Comando que permite realizar peticiones DHCP en los equipos cliente.
dhclient eth0
Si queremos ver todo el proceso de petición y asignación de configuración de red entre cliente y servidor, utilizamos la opción v:
dhclient -v eth0
Si queremos deshacernos de un dirección IP, se envía un paquete DHCPRELEASE:
dhclient -r eth0
Esto haría que el cliente no tuviese ninguna dirección IP.
Ejemplo de uso de dhclient para solicitar una dirección:
root@servidor# dhclient eth1 Internet Systems Consortium DHCP Client V3.1.3 Copyright 2004-2009 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/eth1/00:22:68:98:8a:da Sending on LPF/eth1/00:22:68:98:8a:da Sending on Socket/fallback DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 8 DHCPOFFER of 172.18.142.243 from 172.18.142.225 DHCPREQUEST of 172.18.142.243 on eth1 to 255.255.255.255 port 67 DHCPACK of 172.18.142.243 from 172.18.142.225 bound to 172.18.142.243 -- renewal in 49 seconds. root@servidor#
Agente DHCP Relay
Las comunicaciones DHCP se realizan por broadcast y los mensajes broadcast no pasan a través de los routers. La petición DHCPDISCOVER es una petición broadcast. Si queremos utilizar un servidor que está en un tramo de red, luego un router y después otro tramo de red, las máquinas que están al otro lado de la red del servidor DHCP, no podrán contactar con él.
Soluciones:
- Instalar un servidor DHCP en cada segmento de la red donde sean necesarios.
- Utilizar un servidor DHCP para varias redes (agente DHCP Relay)
El agente DHCP Relay procesa los paquetes de broadcast recibidos desde su subred y retransmite la petición en modo unicast al servidor DHCP.
El agente relay se inicia de forma interactiva mediante el comando dhcrelay:
dhcrelay -i <interfaz> <dirección_servidor>
-i <interfaz>: (opcional) Especifica la interfaz por la que el agente relay estará a la escucha del servidor DHCP y de las peticiones de los clientes.<dirección_servidor>: la dirección IP del servidor al que se transmitirán las peticiones DHCP.
