Server DHCP IPv4 básico, en CentOS 6.5

   En este post, aprenderemos a montar un servidor del protocolo DHCP en GNU/Linux, específicamente en CentOS. Esta será una instalación y posterior configuración del servidor, lo bastante simple para que sea puesto en una LAN con sólo una red o subred. Por lo cual en este post no se pretende enseñar conceptos avanzados, con respecto a la configuración de un servidor DHCP como lo son: DHCP Multihomed o DHCP Relay Agent, entre otros. Sino que será una configuración básica de un servidor DHCP, para que en futuras entradas realicemos configuraciones avanzadas de un servidor DHCP tomando éste como base.

   Pero antes de comenzar a configurar nuestro servidor, necesitamos tener una idea general de lo que es DHCP.

   Dynamic Host Configuration Protocol (DHCP) es un protocolo de red que automáticamente asigna información TCP/IP a máquinas clientes. Cada cliente DHCP, se conecta al servidor DHCP el cual devuelve la configuración de red (incluyendo la dirección IP, puerta de enlace predeterminada, y servidores DNS) a ese cliente. En nuestro caso toda la información devuelta por el servidor DHCP será para IP versión 4.

Requisitos:
   Infraestructura física o virtual.
  1. Máquina física o virtual servidora, con una instalación limpia y correspondientes actualizaciones al día de CentOS 6.5 x86_64 minimal.
  2. Máquina cliente a elección.
  3. Router casero (opcional).
   Parámetros de configuración que serán aplicados al servidor DHCP.
  1. Las direcciones IPv4 asignables a host, que nuestro servidor DHCP asignara o arrendara a los clientes DHCP en nuestra LAN.
  2. La dirección IPv4 de puerta de enlace predeterminada.
  3. La dirección IPv4 de uno o más servidores DNS. 
   Para satisfacer los parámetros de configuración anteriormente dichos, tomaremos como base la siguiente topología de red:



   Según la topología mostrada tendríamos estos siguientes parámetros a configurar en nuestro servidor:
  1. El pool de direcciones IPv4 asignables a host, será desde la dirección 192.168.1.3 hasta la dirección 192.168.1.254
  2. La dirección IPv4 de puerta de enlace predeterminada será la dirección 192.168.1.1 (La de nuestro router).
  3. La dirección IPv4 de nuestro servidor DNS será la dirección 8.8.8.8 (DNS de google).
  4. Y por último no menos importante nuestra propia configuración IPv4 a una de nuestras interfaces (eth0).
   Con todo esto ya dicho es momento de poner manos a la obra.

   Lo primero es levantar nuestra interfaz de red generalmente eth0 y conectarnos a Internet con el siguiente comando, que por defecto buscará un servidor DHCP para obtener los datos de conexión.
Nota: se asume que al momento de emitir este comando estás conectado a una red que cuente con un servidor DHCP y una conexión a internet, para posteriormente poder instalar los paquetes necesarios para montar nuestro servidor.
~]# ifup eth0
   Instalación del servidor DHCP:
Para instalar solo es necesario escribir el siguiente comando como el usuario root:
~]# yum install -y dhcp 
   Instalar el paquete dhcp crea un archivo, /etc/dhcp/dhcpd.conf el cual es meramente un archivo de configuración vacío, se puede comprobar con el siguiente comando:
~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
   Como tenemos el archivo de configuración vacío lo que haremos será utilizar el que viene de ejemplo que lo pueden copiar de la siguiente manera:
cp /usr/share/doc/dhcp-<version_number>/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
   Donde el <version_number&gt es posible obtenerlo con los siguientes dos comandos:
Con el primer comando nos vamos a mover al siguiente directorio /usr/share/doc
~]# cd /usr/share/doc                                                          
   Con el segundo comando escrito y sólo presionando la tecla "TAB" veremos cuál versión del software tenemos instalada:
doc]# dhcp-
dhcp-4.1.1/        dhcp-common4.1.1/
   Como en nuestro caso tenemos la versión 4.1.1 instalada ejecutaremos el siguiente comando para reemplazar el archivo de configuración existente por el de ejemplo:
doc]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
   Una vez hecho eso ha llegado el momento de configurar los parámetros que servirá nuestro servidor DHCP. Pero antes de configurar debemos conocer los parámetros que ingresaremos al archivo de configuración.
  • "subnet" la dirección de red o subred en la cual se está configurando el servidor DHCP.
  • "netmask" la máscara de red o subred en la cuál se está configurando el servidor DHCP
  • "option routers" acá va la dirección de default gateway o puerta de enlace predeterminada, que en nuestro caso es la dirección 192.168.1.1.
  • "option domain-name-servers" es la dirección IPv4 del servidor DNS de nuestra preferencia, en nuestro caso es el servidor DNS de google 8.8.8.8, pero podría también ser uno montado por ti mismo.
  • "option subnet-mask" es la máscara de subred que se le aplicará a cada dirección IPv4 del pool de direcciones de host que el servidor DHCP asignará, en nuestro caso 255.255.255.0.
  • "range" es el rango o pool de direcciones IPv4 que asignaremos a nuestros clientes. En nuestro caso el pool será desde la dirección IPv4 192.168.1.3 hasta la dirección 192.168.1.254
   Debemos escribir todas estas configuraciones al final del archivo dhcpd.conf que se encuentra en la siguiente ruta /etc/dhcp/dhcpd.conf, puedes hacerlo con un editor como vivim o nano, lo que importa es que coloques la configuración correcta al final del archivo, ah! y no te olvides de guardar el archivo. La configuración es la siguiente:
subnet 192.168.1.0 netmask 255.255.255.0 {
        option routers                    192.168.1.1;
        option domain-name-servers        8.8.8.8;
        option subnet-mask                255.255.255.0;
     range 192.168.1.3 192.168.1.254;
}

   Ya casi acabamos la configuración de nuestro servidor DHCP. Todavía no podemos levantar nuestro servidor porque no hemos configurado nuestra interfaz eth0, la cual físicamente debe estar conectada a la red o subred a la que prestaremos el servicio. Esta interfaz a través del servidor o daemon DHCP será la encargada de contestar las solicitudes de nuestros clientes DHCP, por lo tanto es de suma importancia que la configuración IPv4 de la interfaz eth0 este dentro de la red 192.168.1.0/24.
   Para configurar debemos modificar el archivo de configuración propio de la interfaz que en nuestro caso es la interfaz "eth0" y se encuentra en la siguiente ruta: /etc/sysconfig/network-scripts/ifcfg-eth0, la configuración de este archivo debe quedar guardada de esta forma:
DEVICE=eth0
HWADDR=00:0C:29:6F:66:77
TYPE=Ethernet
UUID=adc218fa-cbfa-4063-bf0c-0122-e2536d33
ONBOOT=no
NM_CONTROLLED=yes
BOOTPROTO=no
GATEWAY=192.168.1.1
IPADDR=192.168.1.2
BROADCAST=192.168.1.255
NETWORK=192.168.1.0 
   Donde los parámetros HWADDR y UUID deben ser únicos a tu configuración.
Luego de configurar la interfaz "eth0" emitiremos los siguientes dos comandos para que tome efecto nuestra configuración de interfaz.
~]# ifdown eth0
~]# ifup eth0
   Con eso nos aseguramos que nuestra configuración de red en la interfaz tome efecto. Es posible que surja algún problema al intentar por primera vez "ejecutar" o "levantar" nuestro servidor, a causa de que "podría" haber un archivo faltante especificamente dhcpd.leases. Para evitar ese posible problema ejecutaremos el siguiente comando:
~]# touch /var/lib/dhcp/dhcpd.leases
   Ha llegado el momento de levantar nuestro servidor DHCP lo cuál no debería reportar ningún problema si hasta este punto hemos seguido la guía al pie de la letra.
Lo levantaremos con el siguiente comando:
~]# service dhcpd start
   Y voilá tenemos nuestro servidor andando!!!.

Nota final: siempre que modifiques la configuración del servidor DHCP es obligatorio reiniciar el servicio.

   Espero hayas disfrutado leyendo esta guía, tanto como yo he disfrutado escribirla. Si deseas profundizar en este tópico puedes visitar las fuentes bibliográficas que cito a continuación :).

   Fuentes bibliográficas: Red Hat Enterprise Linux 6 Deployment GuideChapter 14 DHCP Servers.

Guía realizada por: Felipe Henríquez.

Publicar un comentario