Instalar Servidor DHCP en Ubuntu Server

Hoy vamos a ver cómo instalar un Servidor DHCP en Ubuntu Server.

 
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

1
2
3
4
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 :

1
$ sudo apt-get install dhcp3-server

 
instalar servidor dhcp ubuntu
 
*** El paquete conocido como dhcp3-server, ahora es isc-dhcp-server ***
 
En ese caso, instalaremos el paquete del servidor dhcp con:

1
sudo apt install isc-dhcp-server

 
Y después podremos configurar nuestro servidor dhcp.
 

Buscamos el archivo dhcpd.conf en :

1
/etc/dhcp3/dhcpd.conf

 
De nuevo, recordamos que en el nuevo paquete DHCP, el archivo será este:

1
/etc/dhcp/dhcpd.conf

 
Podemos hacer un backup del archivo antes de editarlo:

cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.back
 
Tenemos que localizar el siguiente texto y lo editaremos a nuestra conveniencia:

1
2
3
4
5
6
7
8
9
10
# 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):

1
2
3
4
5
6
7
8
9
10
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 dhcp.
  • 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 :El cliente recibe una dirección dhcp pero no un nombre de host.
  • get-lease-hostnames true sirve para configurar DHCP de ISC para establecer la opción de nombre de host basado en datos de DNS. Se suele elegir esta opción cuando el servidor maneja un número pequeño de direcciones dinámicas.
  • 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á el servidor DHCP:
En el viejo paquete DHCP3:

1
/etc/default/dhcp3-server

** En el nuevo paquete DHCP:

1
/etc/default/isc-dhcp-server

 
Servidor DHCP | interfaz DHCP  /etc/default/dhcp3-server
 
Luego iniciamos el servicio del servidor DHCP sobre la interfaz deseada:

1
sudo systemctl start isc-dhcp-server.service

 
Y habilitamos el servicio para que se inice en cada arranque del sistema con:

1
sudo systemctl enable isc-dhcp-server.service

 
Podemos reiniciar el servicio posteriormente cuando sea necesario con 

1
sudo systemctl restart isc-dhcp-server.service

 

 
También es posible que debamos reiniciar las interfaces de red:

1
systemctl restart networking

o

1
sudo systemctl restart networking.service

 
Con el antiguo paquete dhcp3-server puede que recibamos el siguiente error:

Can’t create PID file /var/run/dhcpd.pid: Permission denied.


 
En cuyo caso habremos de crear un enlace simbólico apuntando al PID:

1
ln -s /var/run/dhcp3-server/dhcpd.pid /var/run/dhcpd.pid

 

 

Configuración del cliente DHCP :

 


 

Lo configuraremos como Automático (DHCP):

Servidor DHCP | cliente 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

Servidor DHCP | dhclient
 
Observamos que el cliente acepta la dirección 192.168.1.31

También podemos revisar el log en el Servidor DHCP, con

1
tail -f /var/log/syslog

Servidor DHCP | Log del Servidor DHCP

 
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.
 

 

También puede que nos encontremos con este POSIBLE ERROR en el servicio dhcp : Not configured to listen on any interfaces

 

not configured to listen on any interfaces dhcpd


 
Probablemente nos hemos olvidado de editar el archivo /etc/default/isc-dhcp-server , en el cual configuramos la interfaz sobre la que funcionará nuestro servidor DHCP.
 
Algo así:

1
INTERFACES= "eth0"

 
También podemos iniciar el servicio de esta forma:

1
sudo service isc-dhcp-server restart

 
Si no encontramos el archivo dhcp3-server, usaremos:

1
/etc/init.d/isc-dhcp-server restart

o

1
sudo service isc-dhcp-server 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