Que es DHCP ?
Un servidor Dynamic Host Configuration Protocol (DHCP) asigna dinámicamente las direcciones IP y otras configuraciones de una red determinada a otros ordenadores clientes que estan conectados a la red. Esto simplifica la administración de la red y hace que la conexión de nuevos equipos a la red sea mucho más fácil.

Todas las direcciones IP de todos los equipos se almacenan en una base de datos que reside en un servidor.
Un servidor DHCP puede proporcionar los ajustes de configuración utilizando dos métodos

Rango de Direcciónes

Este método se basa en la definición de un grupo de las direcciones IP para los clientes DHCP (tambien llamado IP address pool) que suministran sus propiedades de configuración de forma dinámica segun lo soliciten los ordenadores cliente. Cuando un cliente DHCP ya no está en la red durante un período determinado, la configuración vence y la direccion ip del poll es puesta en libertad el uso de otros clientes DHCP.

Dirección MAC

Este método se basa en utilizar el protocolo DHCP para identificar la dirección de hardware única de cada tarjeta de red conectada a la red y luego es asignada una configuracion constante asi como la misma direccion IP cada vez que la configuración de DHCP del cliente realiza una petición al servidor DHCP desde el mismo dispositivo de red.
Instalar un servicio DHCP en Ubuntu y Debian
Para instalar el servidor de asignacion automatica de direccion IP ejecutamos el comando:
sudo apt-get install dhcp3-server
Este sencillo paso instala el servidor en nuestro linux.


Configurando el servidor DHCP

En el caso que tengan dos interfaces de red (NIC) en su servidor Linux tienen que seleccionar cual van a utilizar para escuchar las peticiones DHCP.  Para configurar el servicio, editamos el archivo /etc/default/dhcp3-server, y cambiamos INTERFACES=”eth0″  por la tarjeta de red interna.
Es necesario hacer una copia de seguridad del archivo de configuracion:

cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf.back

Configurar utilizando el metodo de rango de direcciones (IP pool)
Editamos la configuracion tecleando:
sudo vi /etc/dhcp3/dhcpd.conf
Y en este archivo cambiamos las siguientes secciones
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
option domain-name-servers 192.168.1.9, 192.168.1.10;
option domain-name “guatewireless.org”;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.200;
}

Guardamos y salimos del archivo. El texto anterior configura el servidor DHCP con los siguientes parametros:
Asignacion a los clientes direcciones IPs del rango de 192.168.1.10 hasta 192.168.1.200
Prestara la direccion IP por un minimo de 600 segundos, y como maximo permitido de 7200 segundos.

Determina la mascara de subred a 255.255.255.0
Direccion de broadcast de 192.168.1.255
Como gateway/pasarela de red/router la direccion 192.168.1.1
Y los servidores 192.168.1.9 y 10 como sus servidores DNS

Configurar utilizando el metodo de direcciones MAC

Con este metodo se puede reservar algunas o todas las direcciones IP de nuestra red para determinadas maquinas. Como podran ver la configuracion es muy parecida a la anterior, con la salvedad que para reservar la asignacion de una IP a una determinada NIC (network card interface) debemos de utilizar la etiqueta host
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
option domain-name-servers 192.168.1.9, 192.168.1.10;
option domain-name “guatewireless.org”;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.200;
}
host oracle{
hardware ethernet 00:03:47:31:e1:7f;
fixed-address 192.168.1.20;
}
host printer {
hardware ethernet 00:03:47:31:e1:b0;
fixed-address 192.168.1.21;
}

Ahora reiniciamos el servidor dhcp ejecutando el siguiente comando:

sudo /etc/init.d/dhcp3-server restart

Configurar el cliente DHCP en Linux Ubuntu

Si dean configurar un escritorio o maquina con linux como cliente DHCP seguimos los siguientes pasos:
Editamos el archivo de interfaces de red
sudo vi /etc/network/interfaces

Debemos de tener las siguientes lineas, tomando en cuenta que eth0 es un ejemplo

auto lo eth0
iface eth0 inet dhcp
iface lo inet loopback

Salvamos y salimos del archivo
Reiniciamos los servicios de red de Linux Ubuntu
sudo /etc/init.d/networking restart
Para poder conocer las direcciones asignadas a las maquinas clientes
tail -n 15 /var/lib/dhcp3/dhclient.*.leases