Ya hemos hablado y explicado en otras ocasiones este protocolo. Si necesitais refrescar conceptos podéis revisar el artículo sobre Servicio DHCP y pruebas con Whireshark.
Primero vamos a configurar las interfaces editando el archivo /etc/network/interfaces
Crearemos nuestro servidor dhcp sobre una interfaz interna eth1 con ip 192.168.1.150
auto eth1
iface eth1 inet static
address 192.168.1.150
netmask 255.255.255.0
Ahora vamos a por el paquete que instalará en nuestra máquina Linux el servicio de servidor dhcp :
$ sudo apt-get install dhcp3-server
Y después podremos configurar nuestro servidor dhcp.
Buscamos el archivo dhcpd.conf en :
/etc/dhcp3/dhcpd.conf
Podemos hacer un backup del archivo antes de editarlo:
cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf.back
Tenemos que localizar el siguiente texto y lo editaremos a nuestra conveniencia:
# 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;
#}
Tiene que quedar así, por ejemplo (esta es una configuración muy básica):
default-lease-time 86400;
max-lease-time 604800;
get-lease-hostnames false;
subnet 192.168.1.0 netmask 255.255.255.0 {
option broadcast-address 192.168.1.255;
option subnet-mask 255.255.255.0;
option routers 192.168.1.1;
option domain-name <IP servidor de nombres>;
range 192.168.1.31 192.168.1.41;
}
default-lease-time : Especifica la cantidad de tiempo (en segundos) que durará la asignación de dirección a cada cliente.
max-lease-time : Especifica la cantidad de tiempo máximo que durará la asignación de dirección a cada cliente.
get-lease-hostnames false :
get-lease-hostnames true sirve para configurar DHCP de ISC para establecer la opción de nombre de host basado en datos de DNS .
option domain-name : Especifica el nombre de dominio del servidor de Nombres que usará el cliente en las peticiones DNS.
Configuramos la interfaz sobre la que funcionará DHCP:
Luego activamos el servidor DHCP sobre la interfaz deseada:
/etc/init.d/dhcp3-server start
(Podemos reiniciarlo posteriormente cuando sea necesario con dhcpd3 eth1 start .
También es posible que debamos reiniciar las interfaces de red:
/etc/init.d/networking restart
Puede que recibamos el siguiente error:
En cuyo caso habremos de crear un enlace simbólico apuntando al PID:
ln -s /var/run/dhcp3-server/dhcpd.pid /var/run/dhcpd.pid
Lo configuraremos como Automático (DHCP):
En el Cliente tendremos que volver a pedir una dirección IP, así que vamos a ejecutar el cliente dhcp.
Lo hacemos con el comando dhclient
Observamos que el cliente acepta la dirección 192.168.1.31
También podemos revisar el log en el Servidor DHCP, con
tail -f /var/log/syslog
Podemos observar cómo el cliente tenía al principio la ip 192.168.1.155, que ha cambiado por la 192.168.1.31 , que es la primera posible del rango configurado.
Con esto habremos configurado nuestro servidor DHCP de forma básica.
Puede que nos encontremos con este POSIBLE ERROR:
not configured to listen on any interfaces dhcpd
Probablemente nos hemos olvidado de editar el archivo /etc/default/dhcp3-server , en el cual configuramos la interfaz sobre la que funcionará nuestro server dhcp.
También podemos iniciar el servicio de esta forma: /etc/init.d/dhcp3-server restart
O con sudo dhcpd3 eth1 restart
Otro detalle que debemos tener en cuenta es que el servidor DHCP utiliza el puerto 67 y 68 a través de UDP.
Si configuramos un firewall o cortafuegos, debemos asegurarnos de permitir dicho tráfico .
Información y Descargas sobre DHCP Isc