Servidor de IPs dinámicas DHCP en Linux
Mediante el protocolo cliente-servidor DHCP (Dynamic Host Configuration Protocol, Protocolo de Configuración Dinámica de Hosts), un servidor DHCP asigna automáticamente IPs a las máquinas que se conectan a la red. Esto es especialmente útil en redes inalámbricas y en redes locales dónde la configuración manual sea dificultosa debido al gran número de estaciones.
El servidor DHCP más utilizado es el servidor del ISC (Internet Systems Consortium, isc.org, paquete dhcp3-server) y es el que instalaremos nosotros.
Equivalencias en Windows: MS-DHCP.
¿Cómo funciona DHCP?
Veamos cómo negocian el cliente y el servidor DHCP la concesión de una IP.
- Si el cliente solicita una dirección IP por primera vez:
- Solicitud de concesión: cuando arranca un cliente, intenta conseguir una configuración válida para la red en la que está. Para ello hace saber a los servidores DHCP que estén a la escucha que un nuevo cliente quiere una IP válida, enviando un mensaje DHCPDiscover de broadcast (se manda a todas las máquinas de la red) al puerto 68 UDP. Dado que el cliente aún no tiene IP, se identifica mediante la MAC (Media Access Control address). Una vez hecho esto, el cliente queda a la espera de una respuesta.
- Oferta de concesión: en la red puede haber un servidor DHCP o varios. Aquellos servidores DHCP que tengan alguna IP disponible para conceder enviarán un mensaje DHCPOffer de broadcast al puerto 67 UDP, que contendrá la IP del servidor DHCP, la IP ofertada y los parámetros de configuración. Esta información se "presta" y es válida sólo durante un determinado período de tiempo, transcurrido el cual la oferta caduca.
- Selección de concesión: el cliente captará los DHCPOffer y responderá enviando un mensaje DHCPRequest a la IP del servidor solicitando la IP ofrecida.
- Confirmación de selección: el servidor solicitado enviará un mensaje DHCPAck de broadcast con la confirmación de la IP y los parámetros definitivos. Una vez recibido este mensaje, el cliente configura su interfaz de red usando la información proporcionada por el servidor DHCP.
- Si el cliente ya tuvo una IP en esa red, el proceso es diferente:
- Solicitud de renovación: cuando arranca un cliente que ya tuvo una IP en esa red, intentará recuperar la IP de la concesión anterior, por lo que mandará un mensaje DHCPRequest de broadcast detallando la IP que quiere recuperar, al que sólo responderá aquel servidor que posea en su intervalo de concesiones la IP requerida.
- Confirmación de renovación: si el cliente puede usar la IP
solicitada, el servidor responde con un mensaje DHCPAck. Una vez recibido
este mensaje, el cliente configura su interfaz de red usando la información
proporcionada por el servidor DHCP.
Si el cliente no pudiera utilizarla porque la está usando otro cliente o porque el cliente se ha desplazado físicamente a otra subred y la IP solicitada no es válida para esa red, entonces el servidor responde con un mensaje DHCPNack, obligando al cliente a iniciar el proceso normal de concesión.
- Si el servidor no responde, el cliente autoconfigura su interfaz IP (utilizando la anterior concesión si dispone de ella), e intentará cada cierto tiempo localizar un servidor DHCP y obtener una concesión.
- La información de TCP/IP que se concede al cliente debe ser renovada cada cierto tiempo. Para ello, el cliente envía un mensaje DHCPRequest al servidor, que responderá con un mensaje DHCPAck con la información de la nueva concesión.
- Caché de asignaciones del servidor: dado que el servidor DHCP puede pararse
y reiniciarse, guarda la lista de direcciones asignadas en el fichero
/var/lib/dhcp3/dhcpd.leases. Cuando se inicia el servidor, después de leer
/etc/dhcp3/dhcpd.conf lee /var/lib/dhcp3/dhcpd.leases, estableciendo
qué máquinas tienen asignaciones activas. Por ejemplo, si el servidor DHCP ha
concedido la IP 192.168.1.10, el contenido de /var/lib/dhcp3/dhcpd.leases será:
lease 192.168.1.10 { starts 6 2006/04/01 13:36:52; ends 6 2006/04/01 13:46:52; binding state active; next binding state free; hardware ethernet 00:10:60:ba:05:bf; }
- Caché de asignaciones del cliente: una vez el cliente dispone de IP, guarda los
datos de la asignación en /var/run/dhclient.eth0.leases, de manera que la
próxima vez que el cliente solicite una IP, solicitará la última IP concedida.
Si el servidor no responde, el cliente autoconfigurará su interfaz con esos datos. El contenido
de /var/run/dhclient.eth0.leases será similar a:
lease { interface "eth0"; fixed-address 192.168.1.10; option subnet-mask 255.255.255.0; option routers 192.168.1.1; option broadcast-address 192.168.1.255; option dhcp-lease-time 600; option dhcp-message-type 5; option dhcp-server-identifier 192.168.1.3; renew 6 2006/4/1 12:49:13; rebind 6 2006/4/1 12:52:58; expire 6 2006/4/1 12:54:13; }
13 Comentarios en “Servidor de IPs dinámicas DHCP en Linux”
Deja un comentario

Se mira bastante bueno
Tu tutorial explica bastante bien y me ha servido mucho gracias
Te felicito, es raro ver un tutorial tan bien detalldo
Excelente tutorial, muy explicativo y con mucho detalle!!
Saludos desde Colombia
Tengo Un DHCP instalado funciona perfecto, lo que quiero es poner uno de sus equipos cliente con una ip fija…. desde ya muchas gracias
muchas gracias.
he llegado aquí buscando cómo poner una ip fija a uno de los equipos de la red. Además de encontrar la respuesta e leído todo el artículo pues está muy bien explicado cada apartado del dhcpd.conf
Ahora tengo mejor configurada la red. Gracias ;)
buen tutorial, pero:
Si tengo una maquina en linux que tiene una interface eth2 con ip 192.168.11.1 para la red 192.168.11.0/24 y configuro dos subinterfaces eth2:0 con ip 192.168.12.1 y eth2:1 con ip 192.168.13.1 para las redes 192.168.12.0/24 y 192.168.13.0/24 respectivamente, como debo configurar el dhcp en la maquina linux para que atienda a las tres redes.
gracias por tu tiempo.
se mira muy completo. lo imprimo y leo.
En verdad muy bueno aunque aun lo tengo que estudiar màs a fondo ya que aun no me queda pero continuo en lo mismo ya que la perseverancia es la clave del exito y se que dentro de pronto me quedara.
Muchas gracias por tu muy buena informaciòn compañero.
Solo que aun tengo una duda espero pronto dar con la respuesta lo que pasa que yo tengo el acceso a Internet por wifi osea que mi interfaz es wlan0 o wlan1 ya sea uno de los dos y mi duda es si en esta parte de la configuraciòn /etc/network/interfaces en vez de poner las interfaces de eternet que serian las eth0 y eth1 en mi caso seria wlan0, eth0 ya que en eth0 seria el puerto de salida a donde iria conectado el switch o cable cruzado en el caso de una sola pc si alguien sabe y me pudiera decir se lo agradece muchisimo.
Perdon si irrumpo sin avisar.
el tema me parece de lo mas interesante (ya lo tengo en bookmarks…).
llegue hasta aqui investigando algo que no he encontrado.
ocasionalmente un usuario avanzado en la LAN instala un servidor DHCP y provoca colisiones con las IP.
Como puedo identificar al transgresor? con pocas maquinas puedo ir viendolas una a una, pero si el numero de hosts es muy grande, se vuelve impractico.
talvez con nmap? .. un script que corra para todos los hosts, guarde el resultado en un archivo de texto y luego buscar con grep donde haya una linea que se refiera a dhcp? …
O existe una forma ya estandar? y estaria redescubriendo el agua azucarada!!!
Agradecere si se te ocurre algo.
carlos
Soy aun un estudiante pero quisiera saber que es IPS en servidor DHCP
gracias…..
Bueno soy nuevo en esto, en realidad es lo que todos dicen, pero
Tengo una pregunta, tonta pero de todos modos es pregunta, y es que como asigno los DNS de cada máquina, en un servidor DNS aparte??? pero entonces tengo que instalar un servidro DNS y DHCP??? Ahora, esto lo puedo hacer en la misma máquina o tiene que ser definitivamente en 2 maquinas aparte..!!!
De antemano, Gracias por las respuestas que aporten…
Saludos…!!!