Tabla de Contenidos

Introducción a DHCP

DHCP (Dinamic Host Control Protocol) es un protocolo de red utilizado para asignar una serie de configuraciones TCP/IP (dirección IP, nombre de la maquina,dominio al que pertenece, routeador, servidor DNS, gateway) a los equipos que forman parte de una red de área local LAN (Local Area Network).

El DHCP es un protocolo de tipo cliente/servidor que se comunica por el puerto 67 y 68 a través de UDP, generalmente un servidor DHCP posee una lista de direcciones IP dinámicas y las va asignando a las maquinas clientes conforme estas van estando disponibles.

Sin el uso de un servidor DHCP, cada dirección IP se tendría que configurar manualmente en cada equipo y, si el equipo se mueve a otra subred, la IP del equipo seria diferente a la establecida antes. El DHCP le permite al administrador supervisar y distribuir de forma centralizada las direcciones IP necesarias y, automáticamente, asignar y enviar una nueva IP si el equipo es conectado en un lugar diferente de la red.

Funcionamiento de un DHCP

Antes que nada hay que tener en cuenta que nuestro servidor DHCP debe contar con una dirección IP fija, por lo tanto en nuestra red solo existirá un equipo que dispondrá de una IP fija, o sea, nuestro servidor DHCP.

El paso siguiente es cuando la maquina cliente se conecta a la red, en este fase, la maquina cliente hace uso del sistema básico de comunicación BOOTP. El BOOTP (Bootstrap Protocol) es un protocolo de red UDP utilizado para obtener la dirección IP automáticamente y usualmente es iniciado cuando se realiza en el proceso de boteo de una computadora o sistema operativo. Cuando la maquina cliente se inicia esta no cuenta con información sobre la configuración de red a la cual esta conectada, en este momento la maquina cliente inicia una técnica llamada transmisión la cual busca, encuentra y se comunica con el servidor DHCP solicitándole los parámetros de configuración de la red. Cuando el DHCP recibe el paquete de transmisión este contestará con otro paquete de transmisión que contiene toda la información solicitada por el maquina cliente.

Algunos de esos paquetes que se transmiten del cliente al servidor DHCP y viceversa son los siguientes:

Asignación de direcciones IP

El protocolo DHCP incluye tres métodos de asignación de direcciones IP:

Requerimientos para la Instalación de un DHCP

Procederemos a instalar nuestro servidor DHCP mediante la descarga de los siguientes paquetes por lo que se recomienda que dichas descargas se hagan como root.

Para ello teclearemos en consola lo siguiente:

  [localhost@localdomain ~]# yum install -y dhcp

Una vez que se halla descargado e instalado el dhcp, este creara su fichero de configuración en la siguiente ubicación:

  /etc/dhcpd.conf

Configuración del fichero dhcpd.conf

El primer paso para configurar el servidor de DHCP sera editar el fichero dhcp.conf al cual le añadiremos la información de nuestra LAN. El archivo de configuración puede contener tabulaciones o líneas en blanco adicionales para facilitar el formato. Las palabras clave no distinguen entre mayúsculas y minúsculas. Las líneas que empiezan con el símbolo numeral (#) se consideran comentarios.

Consideremos el siguiente requerimiento:

Se requiere implementar un servidor DHCP que implemente los tres métodos de asignación de direcciones IP. El servidor DHCP contara con dos tarjetas de red, las cuales tendrán asignadas las direcciones 192.168.1.5 y 192.168.2.5 , el segmento de red sobre el cual actuara el servidor DHCP es el 192.168.1.0, la submascara de red asignada sera la 255.255.255.0, así mismo el servidor DHCP servirá como gateway el cual tendrá asignada la misma dirección IP que el DHCP (192.168.1.5), la dirección de broadcast asignada sera la 192.168.1.255, el rango de direcciones IP que asignara el servidor DHCP estará entre el rango de 192.168.1.7 á 192.168.1.100

Parámetros de configuración

ignore/allow client-updates Permite la actualización de las asignaciones de uncliente a requerimiento de este, o bien lasasignaciones se actualizan cuando el servidor así lorequiera (ignore).
shared-network redLocal Parámetro que describe las subredes que compartiránla misma red física las cuales se especifican dentro de esta declaración
subnet Segmento de subred sobre el cual actuara el dhcp
netmask Mascara de red de la subred
option routers Parámetro que especifica mediante IP la ubicación del router
option subnet-mask Mascara de red de la subred
option broadcast-address Parámetro que especifica la IP de broadcast
option domain-name“tuDominio.com”; Parámetro que describe el nombre de tu dominio
option domain-name-servers Parámetro que especifica mediante IP la ubicación delDNS
range Rango sobre el cual el DHCP asignara direcciones IP
default-lease-time Parámetro que indica el tiempo entre cada nuevaasignación de IP a los equipos
max-lease-time Parámetro que indica el tiempo de vigencia de la dirección IP para cada equipo
host nombreDeLaMaquina Parámetro que describe el nombre del equipo
option host-name“nombreDeLaMaquina.tuDominio.com” Parámetro que describe el nombre de la computadoray el nombre de dominio asociado a la misma
hardware ethernet Parámetro que describe la dirección MAC asociada a latarjeta ethernet del equipo
fixed-address Parámetro que describe la dirección IP destinada a unequipo
authoritative La configuración correcta para la red es la definida enel servidor DHCP. Poner este parámetro al comienzo del archivo de configuración supone que elservidor DHCP reasignará direcciones a los clientesmal configurados por el motivo que sea, incluida unaconfiguración nueva del servidor.
not authoritative La función de este parámetro es justo la contraria delanterior. Es decir: la configuración del servidor deDHCP no es concluyente y los clientes malconfigurados que sean detectados por el servidor,seguirán con su configuración intacta.
ddns-domainname <nombre> Mediante el uso de este parámetro, se añadirá <nombre> al final del nombre de la máquina cliente,para formar un nombre de dominio totalmentecualificado (FQDN).
ddns-hostname <nombre> Por defecto, el servidor DHCP utiliza como nombre para la solicitud el nombre que el cliente tiene asignado a su máquina. Mediante este parámetro se asigna un nombre concreto a una máquina o a todas en general.
ddns-updates <on/off> Activa la actualización DNS mediante los valores asignados por DHCP.
group Inicia la declaración de Grupo.
min-lease-time <duración> Especifica la cantidad mínima de tiempo, en segundos,que será mantenida una asignación de direcciones.
one-lease-per-client <on/off> Cuando la opción se iguala a on y un cliente solicita una asignación de dirección (DHCPREQUEST), el servidor libera de forma automática cualquier otra asignación asociada a dicho cliente. Con esto se supone que si el cliente solicita una nueva asignación es porque ha olvidado que tuviera alguna, luego tiene un sólo interfaz de red. No dándose esta situación entre los clientes no es muy aconsejable el uso de esta opción.
range ip-menor ip-mayor En una declaración de subred, este parámetro define el rango de direcciones que serán asignadas. Pueden darse dos instrucciones range seguidas del modo:range 192.168.0.11 192.168.0.100;range 192.168.0.125 192.168.0.210;
server-identifier <IP> Identifica la máquina donde se aloja el servidor de DHCP. Su uso se aplica cuando la máquina en cuestión tiene varias direcciones asignadas en un mismo interfaz de red.
server-name <nombre> Nombre del servidor que será suministrado al cliente que solicita la asignación.

Editaremos el fichero /etc/dhcpd.conf de tres maneras diferentes, esto con el fin de ejemplificar los tres métodos de asignación de direcciones IP.

Asignación manual

Abriremos una terminal y con la ayuda de “vi” editaremos el fichero dhcpd.conf

  [localhost@localdomain ~]#vi /etc/dhcpd.conf

Una vez abierto el fichero deberemos añadir el siguiente contenido:

  #
  # DHCP Server Configuration file.
  # see /usr/share/doc/dhcp*/dhcpd.conf.sample
  #
  ddns-update-style interim;
  ignore client-updates;
  shared-network redLocal{
   subnet 192.168.2.0 netmask 255.255.255.0{
      option routers 192.168.2.5;
      option subnetmask 255.255.255.0;
      option broadcastaddress 192.168.2.255;
      option domain-name "redLocal.com.";
      option domain-name-servers 192.168.2.5;
   }
   host maquina1{
      option hostname "maquina1.redLocal.com";
      hardware ethernet 00:1b:24:e2:d7:41;
      fixed-address 192.168.2.10;
   }
   host maquina2{
       option hostname "maquina2.redLocal.com";
       hardware ethernet 00:2c:212:ef5:a7:13;
       fixedaddress 192.168.2.11;
   }
  }

Lo hecho anteriormente hace que el servidor DHCP asigne a dos equipos de la red, las direcciones IP que fueron anexadas en el fichero dhcp.conf

Asignación automática

Abriremos una terminal y con la ayuda de “vi” editaremos el fichero dhcpd.conf

  [localhost@localdomain ~]#vi /etc/dhcpd.conf

Una vez abierto el fichero deberemos añadir el siguiente contenido:

  #
  # DHCP Server Configuration file.
  # see /usr/share/doc/dhcp*/dhcpd.conf.sample
  #
  ddns-update-style interim;
  ignore client-updates;
  shared-network factorcentos{
    subnet 192.168.2.0 netmask 255.255.255.0{
      option routers 192.168.2.5;
      option subnetmask 255.255.255.0;
      option broadcastaddress 192.168.2.255;
      option domainname "factorcentos.com.mx";
      option domainnameservers 192.168.2.5;
      range 192.168.2.1 192.167.2.100;
     }
   }

Lo hecho anteriormente hace que el servidor DHCP asigne a dos equipos de la red, dos direcciones IP aleatorias dentro del rango de 192.168.2.10 al 192.168.1.200

Asignación dinámica

Abriremos una terminal y con la ayuda de “vi” editaremos el fichero dhcpd.conf

  [localhost@localdomain ~]#vi /etc/dhcpd.conf

Una vez abierto el fichero deberemos añadir el siguiente contenido:

  #
  # DHCP Server Configuration file.
  # see /usr/share/doc/dhcp*/dhcpd.conf.sample
  #
  ddns-update-style interim;
  ignore client-updates;
  shared-network factorcentos{
   subnet 192.168.2.0 netmask 255.255.255.0{
      option routers 192.168.2.5;
      option subnetmask 255.255.255.0;
      option broadcastaddress 192.168.2.255;
      option domainname "factorcentos.com.mx";
      option domainnameservers 192.168.2.5;
      range 192.168.2.1 192.167.2.100;
      default-lease-time 21600;
      max-lease-time 43200;
     }
   }

Lo hecho anteriormente hace que el servidor DHCP asigne a dos equipos de la red, dos direcciones IP aleatorias dentro del rango de 192.168.2.10 al 192.168.1.200 las cuales serán renovadas cada cierto tiempo asignado de nuevo direcciones IP aleatorias dentro del rango de 192.168.2.10 al 192.168.1.200

Ejemplos de mas asignaciones

Existen algunas opciones adicionales para configurar un servidor de DHCP las cuales casi siempre son necesarias. A continuación vamos a analizar algunas de ellas con prácticos ejemplos, analizando siempre los parámetros mas importantes que podemos llegar a usar

Declaración de Subred

Para este tipo de configuración , se debe incluir la declaración subnet la cual deberá estar especificada para cada subred en la red original. Si no es así, el servidor DHCP nunca arrancara Para este ejemplo hemos puesto opciones globales para cada cliente del servidor DHCP en la subred, así como el parámetro range lo cual hará que a cada maquina cliente le asigne una dirección IP dentro de las IP declaradas en range

  subnet 192.168.1.0 netmask 255.255.255.0 {
      option routers 192.168.1.1;
      option subnetmask 255.255.255.0;
      option domainname "ejemplolinux.com";
      option domainnameservers 192.168.1.1;
      option timeoffset 18000;
      range 192.168.1.10 192.168.1.100;
   }

Declaracion de Red Compartida

Las subredes son un subconjunto de la red original, pero para declararlas deben especificarse dentro de una declaración sharednetwork. Los parámetros dentro de sharednetwork pero fuera de las declaraciones subnet se consideran parámetros globales. El nombre de sharednetwork debe ser el título descriptivo de la red, como, por ejemplo redLocal. Dicho nombre puede ser igualmente una dirección IP.

  shared network redLocal {
      option domain-name "wiki.ejemplolinux.com";
      option domain-name-servers mydns.ejemplolinux.com;
      option routers 192.168.1.1;
          ---Declaración de subredes específicas---
       subnet 192.168.1.2 netmask 255.255.255.0 {
          parameters for subnet
          range 192.168.1.3 192.168.1.50;
       }
       subnet 192.168.1.51 netmask 255.255.255.0 {
          parameters for subnet
          range 192.168.1.52 192.168.1.100;
       }
   }

Declaracion de Grupo

EL parámetro group puede utilizarse para aplicar parámetros globales a un grupo de declaraciones. Puede agrupar redes compartidas, subredes, hosts u otros grupos.

  group {
   option routers 192.168.1.1;
   option subnetmask 255.255.255.0;
   option domainname "ejemplolinux.com";
   option domainnameservers 192.168.1.1;
   option timeoffset 18000;
   host recepción {
        option host_name "recepcion.ejemplolinux.com";
        hardware ethernet 00:1b:24:e2:d7:41;
        fixed_address 192.168.1.69;
    }
   host soporte {
        option host_name "soporte.ejemplolinux.com";
        hardware ethernet 00:2c:212:ef5:a7:13;
        fixed_address 192.168.1.13;
    }
   }

Levantando el servicio

Al terminar de editar todos los ficheros involucrados, solo bastará iniciar el servidor DHCP, el cual podrá inicializarse, detenerse o reinicializarse con el comando “/etc/init.d” ó de otra forma añadirlo al arranque del sistema en un nivel o niveles de corrida en particular con el mandato chkconfig.

Para levantar por primera vez el servicio teclear en consola lo siguiente:

  [localhost@localdomain ~]#/etc/init.d/dhcpd start

Para reiniciar el servicio:

  [localhost@localdomain ~]#/etc/init.d/dhcpd restart

Para detener el servicio, utilice:

  [localhost@localdomain ~]#/etc/init.d/dhcpd stop

Para añadir el servidor DHCP al arranque del sistema en todos los niveles de corrida, utilice:

  [localhost@localdomain ~]#chkconfig dhcpd on