Está en la página 1de 10

DHCP (Dinamic Host Configuration Protocol)

DHCP se implementa en redes que tienen un gran número de equipos


conectados en diferentes horarios y un número menor de IPs
disponibles.
Una misma IP puede, de esta manera, funcionar en diferentes
máquinas a diferentes horarios, de la misma forma que una misma
máquina puede tener diferentes IPs a diferentes horarios.

Esto es muy útil para los proveedores de servicios (ISP) que de esta
forma evitan tener que asignar manualmente las IP a los usuarios. En
realidad DHCP tiene dos partes:

• Protocolo para el intercambio de parámetros de red específicos


de cada host
• Mecanismo para la asignación automatizada de direcciones de
red

Un servidor DHCP tiene al menos dos tablas de datos:

1. Tabla con datos estáticos, asigna una IP a cada MAC (dirección


física de cada placa de red de los diferentes hosts)
2. La segunda tabla contiene el conjunto de IPs disponibles.

Cuando un usuario pide una dirección IP para conectarse, se le asigna


una dirección IP temporal, y esto se logra seleccionando una de las
IPs disponibles en la última tabla.

Es entonces el servidor quién se encarga de darle una IP disponible al


host en cuestión durante un tiempo configurado de antemano.
Puede ser por una sesión completa (hasta que se desconecte), puede
ser por un tiempo determinado, como 2 horas, etc.

Existen diferentes formas de configurar el tipo de dirección IP


asignado:

• Configuración Estática El ISP recibe una solicitud de conexión


de un host al momento que este quiere conectarse. El servidor
chequea su tabla de datos estática (la que vimos en primer
término). Aquí puede suceder lo siguiente_
o La MAC o dirección física de la placa de red del host no
figura en la tabla estática. En ese caso el servidor
seleccionará una IP de la tabla de IPs dinámica y asocia
esta a la MAC en cuestión en la tabla de IPs estáticas
o La MAC o dirección física de la placa de red del host figura
en la tabla estática y en ese caso, el servidor entregará la
IP asociada de acuerdo a lo indicado en su tabla estática.
En este caso el host recibe siempre la misma IP, como si
se tratase de una conexión de IP estática.

• Configuración dinámica El servidor DHCP entrega una


dirección IP de la lista disponible en su segunda tabla en forma
temporal. Pasado un determinado tiempo ya configurado, el
host cliente deberá renovar la IP siendo el servidor el que
determine si entregará una nueva IP o seguirá con la misma,
por otro período de tiempo.
• Configuración automática: El servidor asigna una dirección IP
permanente a un host cliente la primera vez que esta hace la
solicitud al servidor DHCP. Esa IP se mantendrá hasta que el
cliente la libere sin existir límite de tiempo de uso.

FUNCIONAMIENTO

1. El host cliente envía un paquete DHCPDISCOVER broadcast


mediante el puerto destino 67. Puede haber más de un servidor
DHCP en funcionamiento, por eso tiene sentido el broadcast.
2. Los servidores capacitados para entregar una dirección IP
contestan con un paquete DHCPOFFER, ofreciendo una dirección
IP.
3. Esta oferta se hará hasta 4 veces buscando la respuesta del
host cliente.
4. El host cliente elige una de las IPs ofertadas. Recordemos que
pueden haber varios servidores DHCP trabajando y cada uno
ofertará una dirección IP diferente, así que será el cliente quién
elija cual tomar. Una vez elegido el cliente envía un nuevo
paquete DHCPREQUEST, pero ya no como broadcast sino al
servidor con la IP elegida.
5. El servidor responde con un paquete DHCPACK, creando la
asociación entre la dirección física (MAC) del host cliente y su
IP. El host cliente ya tiene IP por todo el tiempo que dura la
concesión previamente acordada.
6. Antes de finalizar la mitad del tiempo acordado, el host cliente
envía un nuevo paquete DHCPREQUEST para renovar la IP
7. El servidor puede responder con un DHCPACK, y entonces el
cliente seguirá utilizando la IP durante otro período de tiempo.
En cambio si el servidor envía un paquete DHCPNACK, el cliente
deberá dejar de usar la IP y comenzar nuevamente todo el
proceso para la obtención de una nueva IP.
8. En caso de no haberse concretado la respuesta del servidor, al
completar el 87.5% se volverá a realizar el proceso indicado en
el punto anterior. Si se recibe un DHCPACK se renovará la IP por
otro período de tiempo, en caso contrario habrá que comenzar
nuevamente desde 0. Esto es en caso que el host cliente desee
utilizar un tiempo mayor. En caso que el host cliente desee
terminar la conexión antes, no habrá inconvenientes. En este
último caso será el host cliente quién envíe un paquete
DHCPRELEASE al servidor.

Ya sea en forma predeterminada o mediante los repositorios es


posible tener a nuestra disposición el software necesario para poner
en funcionamiento el servidor DHCP. Si quisiéramos bajar la última
versión estable podemos hacerlo desde:

http://www.isc.org/index.pl?/sw/dhcp/

Ubuntu viene equipado con un cliente DHCP y un servidor DHCP. El


servidor es dhcpd (dynamic host configuration protocol daemon). El
cliente suministrado por Ubuntu es dhclient, que seguro ya está
instalado en forma predeterminada. Ambos programas son fáciles de
instalar y de configurar, y deberían iniciarse automáticamente
durante el arranque del sistema.

Configurando el servidor:

En un terminal, introduzca el siguiente comando para instalar el


dhcpd:
sudo apt-get install dhcp3-server

Una vez bajado el software necesario, vamos a configurar el servidor,


para esto abrimos con un editor de texto cualquiera, por ejemplo
“gedit” el archivo /etc/dhcpd.conf, introduciendo en una terminal el
siguiente comando:
sudo gedit /etc/dhcp3/dhcpd.conf
Los datos que vemos a continuación servirán de ejemplo para cómo
configurar este archivo, pero debemos recordar al hacerlo colocar
nuestros verdaderos datos:

• Número de red 192.168.0.0

• Máscara de sub-red: 255.255.255.0

• Puerta de enlace: 192.168.0.1

• Servidor de nombres: 192.168.0.1, 200.51.254.251 y


200.51.254.254
• Rango de direcciones IP a asignar de modo dinámico:
192.168.0.1-192.168.0.199

Lo primero que cambiaremos será,:

# option definitions common to all supported networks...

option domain-name "example.org";

option domain-name-servers ns1.example.org, ns2.example.org;

La primera línea descomentada nos pide el nombre del servidor


DHCP, la segunda el nombre de dominio al cual pertenece. Si se trata
de una red que funciona dentro de Internet estos valores deberán ser
reales, mientras que si es una red interna podremos utilizar cualquier
nombre. La máscara de subred tendrá el valor adecuado de acuerdo a
nuestra subred.

En nuestro caso hemos colocado:

option domain-name "linuxeslibre.com";

option domain-name-servers linuxeslibre.com;

option subnet-mask 255.255.255.0;


Conviene no modificar el tiempo de vida de la IP por defecto y
máxima que aparecen:

default-lease-time 600;

max-lease-time 7200;

Luego aparecen las variables donde podremos configurar nuestra red:

# A slightly different configuration for an internal subnet.

#subnet 10.5.5.0 netmask 255.255.255.224 {

# range 10.5.5.26 10.5.5.30;

# option domain-name-servers ns1.internal.example.org;

# option domain-name "internal.example.org";

# option routers 10.5.5.1;

# option broadcast-address 10.5.5.31;

# default-lease-time 600;

# max-lease-time 7200;

#}

Que cambiaremos por nuestros valores:

subnet 192.168.0.0 netmask 255.255.255.0 {

range 192.168.0.1 192.168.0.199;

#Aquí a continuación, hemos colocado supuestos servidores DNS


nuestros, pero también podríamos agregar los DNS de nuestro ISP.

option name-servers ns1.linuxeslibre.com,ns2.linuxeslibre.com;

#El nombre de dominio al que pertenecen los equipos de la red


option domain-name "linuxeslibre.com";

#Esta es la puerta de enlace

option routers 192.168.0.1;

option subnet-mask 255.255.255.0;

option broadcast-address 192.168.0.255;

default-lease-time 600;

max-lease-time 7200;

Generando IP en forma dinámica

El servidor DHCP, lleva un registro de las IPs que va otorgando y el


mismo se encuentra en /var/lib/dhcp3/dhcpd.leases.
Este archivo contiene la dirección física MAC y el número de IP que va
otorgando. Es decir, que en el momento que el servicio empieza a
funcionar, si bien el archivo existe estará vacío con un comentario
como el siguiente:

# The format of this file is documented in the dhcpd.leases(5)


manual page.
# This lease file was written by isc-dhcp-V3.1.1

Será a medida que otorgue IP a los diferentes hosts que se irá


completando.

Vamos a levantar el servicio escribiendo en consola lo siguiente:

# sudo /etc/init.d/dhcp3-server start

Para monitorear el archivo dhcpd.leases vamos a escribir en consola


lo siguiente:

# tail -f /var/lib/dhcp3/dhcpd.leases
Y veremos algo como esto:

lease 10.5.5.26 {

starts 3 2009/03/25 16:47:55;

ends 3 2009/03/25 16:57:55;

cltt 3 2009/03/25 16:47:55;

binding state active;

next binding state free;

hardware ethernet 00:06:5b:97:e3:85;

uid "\001\000\006[\227\343\205";

client-hostname "KOFCOMNTEDS02";

La opción -f nos permitirá ir viendo las líneas que se van agregando al


archivo a medida que los diferentes hosts se van agregando.
Necesitamos que los clientes estén configurados para recibir IPs
dinámicas o con DHCP, ya que si los tenemos configurados con una IP
fija o manual, este sistema no dará resultado.

Configurando el cliente

Para lograr que el cliente acepte IPs dinámicamente debemos


modificar el archivo /etc/network/interfaces en las diferentes
máquinas de red. Por ejemplo en mi caso que estoy detrás de un IP
fija el archivo en cuestión dice:

# This file describes the network interfaces available on your


system
# and how to activate them. For more information, see
interfaces(5).
# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

allow-hotplug eth0

iface eth0 inet static

address 200.54.07.2

netmask 255.255.0.0

gateway 200.54.07.1

Lo que debemos hacer es mediante un editor de texto cambiar estos


valores de la siguiente manera:

Dejamos toda la primera parte igual y luego del comentario que


vemos a continuación cambiamos lo que sigue:

# The primary network interface

allow-hotplug eth0

iface eth0 inet d.C.

auto eth0

Para que la placa de red tome en cuenta estos cambios, vamos a


bajarla y nuevamente subirla. Esto se puede hacer de varias formas,
elegimos la siguiente:

# cd /etc

# ifdown eth0

# ifup eth0
Mediante el archivo /etc/resolv.conf podremos ver el nombre de
dominio y los nameserver, ahora actualizados de acuerdo al servidor
DHCP.

Configurando IPs fijas

Para esto volveremos a abrir en la máquina el servidor dhcp y con el


editor “gedit” el archivo /etc/dhcpd.conf buscando lo siguiente:

# Fixed IP addresses can also be specified for hosts. These


addresses

# should not also be listed as being available for dynamic


assignment.

# Hosts for which fixed IP addresses have been specified can


boot using

# BOOTP or DHCP. Hosts for which no fixed address is


specified can only

# be booted with DHCP, unless there is an address range on


the subnet

# to which a BOOTP client is connected which has the


dynamic-bootp flag

# set.

#host fantasia {

# hardware ethernet 08:00:07:26:c0:a5;

# fixed-address fantasia.fugue.com;

#}

Aquí vamos a cambiar los valores y a descomentarlo de la siguiente


manera:
host [nombre_del_host] {

hardware ethernet [MAC]

fixed-address 192.168.0.x
}

Para encontrar la MAC de una tarjeta de red determinada, vamos a


línea de comandos de esa máquina y escribimos:

# ifconfig eth0
El resultado será algo como esto:
eth0 Link encap:Ethernet direcciónHW 00:19:b9:64:07:41
inet dirección:10.123.43.71 Difusión:10.123.43.255 Máscara:255.255.255.0
dirección inet6: fe80::219:b9ff:fe64:741/64 Alcance:Vínculo
ARRIBA DIFUSIÓN CORRIENDO MULTICAST MTU:1500 Métrica:1
RX packets:19275 errors:0 dropped:0 overruns:0 frame:0
TX packets:6532 errors:0 dropped:0 overruns:0 carrier:0
colisiones:0 txqueuelen:1000
RX bytes:5788039 (5.7 MB) TX bytes:1367084 (1.3 MB)
Interrupción:21

Donde dice direcciónHW, el número con letras que seguidamente


aparece corresponde a la dirección física o MAC, tomemos en cuenta
que si tenemos varias placas de red en la misma computadora, las
mismas estarán numeradas como eth0, eth1,eth2, etc.
Para averiguar la MAC de otra placa de red de otra computadora,
debemos ejecutar el mismo comando pero esta vez en la
computadora en cuestión. Luego que tengamos todas las MAC de las
computadoras en donde queramos IPs fijas, vamos al archivo que
estábamos configurando y utilizamos un juego de líneas para cada
computadora.

En fixed-address pondremos la dirección IP que queramos usar para


esa MAC en particular. Si deseamos que varias máquinas tengan
dirección fija, agregaremos varios juegos de líneas, cada una con la
MAC y la IP de cada máquina. Una vez guardado el archivo, veremos
en los hosts que hemos indicado en el archivo de configuración del
servidor y mientras no haya un cambio de tarjeta de red, la dirección
IP fija (será siempre la misma). En ese caso del lado cliente o host
podremos configurar la placa de red para IP dinámicas (con DHCP) o
bien con la IP fija sin problema.

También podría gustarte