====== 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: * DHCP Discovery.La maquina cliente enviá este paquete para ubicar los servidores DHCP disponibles en la red interna, una vez recibido este paquete, el servidor DHCP almacena la dirección Ethernet de quien genera la petición. * DHCP Offer.Respuesta del servidor DHCP al paquete DHCP Discover la cual contiene los parámetros de red interna. * DHCP Request.El cliente selecciona la configuración de los paquetes recibidos de DHCP Offer. Una vez más, el cliente solicita una dirección IP específica que indicó el servidor * DHCP Acknowledge.Cuando el servidor DHCP recibe el mensaje DHCP Request del cliente, este inicia la fase final del proceso de configuración .Esta fase implica el reconocimiento DHCP Pack el envío de un paquete al cliente. En este punto, la configuración TCP/IP se ha completado. El servidor reconoce la solicitud y se lo enviá al cliente. * DHCP Release.La maquina cliente enviá una petición al servidor DHCP informándole sobre la liberación de su dirección IP * DHCP Ack.Respuesta del Servidor DHCP al la maquina cliente la cual enviá los parámetros de red como por ejemplo la dirección IP que le corresponde a la misma. * DHCP Inform.El cliente envía una petición al servidor de DHCP para solicitar más información que la que el servidor ha enviado con el DHCP Ask o para repetir los datos para un uso particular. * DHCP Nak.Respuesta del servidor DHCP a la maquina cliente la cual le indica que su dirección IP ha vencido o que su configuración es errónea * DHCP Decline.La maquina cliente le informa el servidor DHCP que la dirección IP ya esta en uso ==== Asignación de direcciones IP ==== El protocolo DHCP incluye tres métodos de asignación de direcciones IP: * Asignación manual: Asigna una dirección IP a un equipo determinado. Es mas frecuentemente utilizado cuando se desea controlar la asignación de direcciones IP a cada equipo y así evitar también , que se conecten equipos no identificados * Asignación automática: Asigna una dirección IP de forma permanente a un equipo. Se suele utilizar cuando el número de equipos en la LAN no varía demasiado. * Asignación dinámica: Este método hace uso de la reutilizacion de direcciones IP, técnica mediante la cual, el servidor dhcp reinicia las tarjetas de red cada cierto intervalo de tiempo, asignando una nueva dirección IP a los equipos. ===== 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 | Mediante el uso de este parámetro, se añadirá al final del nombre de la máquina cliente,para formar un nombre de dominio totalmentecualificado (FQDN). | |ddns-hostname | 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 | Activa la actualización DNS mediante los valores asignados por DHCP.| |group | Inicia la declaración de Grupo.| |min-lease-time | Especifica la cantidad mínima de tiempo, en segundos,que será mantenida una asignación de direcciones.| |one-lease-per-client | 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 | 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 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