Instalación de un servidor DHCP en Debian

Ejercicio 1: Instalación y configuración del servidor dhcp en linux

Instalación y configuración en el servidor

Para este ejercicio vamos a instalar y configurar de forma básica un servidor dhcp en linux. El servidor deberá tener la siguiente configuración:

  • Rango de direcciones a repartir: 192.168.0.100 - 192.168.0.110
  • Máscara de red: 255.255.255.0
  • Duración de la concesión: 1 hora
  • Puerta de enlace: 192.168.0.1
  • Servidores DNS: 8.8.8.8, 8.8.4.4

Para empezar vamos a descargar el paquete isc-dhcp-server, con el que instalaremos el servidor:

apt install isc-dhcp-server

Una vez instalado, nos iremos al archivo de configuración del servidor, localizado en /etc/dhcp/dhcpd.conf, y añadiremos la siguiente configuración al final del fichero:

subnet 192.168.0.0 netmask 255.255.255.0 {
        range 192.168.0.100 192.168.0.110;
        option subnet-mask 255.255.255.0;
        option routers 192.168.0.1;
        option domain-name-servers 8.8.8.8, 8.8.4.4;
        default-lease-time 3600;
        max-lease-time 3600;
}

También hay que añadir en el fichero /etc/default/isc-dhcp-server la siguiente línea:

INTERFACESv4="eth1"

Hay que asegurarse también de que la tarjeta de red que le hemos indicado en la configuración se encuentra dentro del rango de subred que hemos indicado en nuestra configuración:

ip_servidor.png

Ahora ya podemos reiniciar el servicio para que empiece a trabajar con la configuración que le hemos indicado:

systemctl restart isc-dhcp-server

Podemos comprobar que está funcionando con el siguiente comando:

systemctl status isc-dhcp-server

● isc-dhcp-server.service - LSB: DHCP server
     Loaded: loaded (/etc/init.d/isc-dhcp-server; generated)
     Active: active (running) since Fri 2021-10-08 17:25:24 UTC; 33s ago
       Docs: man:systemd-sysv-generator(8)
    Process: 762 ExecStart=/etc/init.d/isc-dhcp-server start (code=exited, status=0/SUCCESS)
      Tasks: 4 (limit: 528)
     Memory: 4.8M
        CPU: 31ms
     CGroup: /system.slice/isc-dhcp-server.service
             └─777 /usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf eth1

Oct 08 17:25:22 Router systemd[1]: Starting LSB: DHCP server...
Oct 08 17:25:22 Router isc-dhcp-server[762]: Launching IPv4 server only.
Oct 08 17:25:22 Router dhcpd[777]: Wrote 0 leases to leases file.
Oct 08 17:25:22 Router dhcpd[777]: Server starting service.
Oct 08 17:25:24 Router isc-dhcp-server[762]: Starting ISC DHCPv4 server: dhcpd.
Oct 08 17:25:24 Router systemd[1]: Started LSB: DHCP server.
Oct 08 17:25:33 Router dhcpd[777]: DHCPDISCOVER from 52:54:00:a1:3c:04 via eth1
Oct 08 17:25:34 Router dhcpd[777]: DHCPOFFER on 192.168.0.100 to 52:54:00:a1:3c:04 (Cliente) via eth1
Oct 08 17:25:34 Router dhcpd[777]: DHCPREQUEST for 192.168.0.100 (192.168.0.1) from 52:54:00:a1:3c:04 (Cliente) via eth1
Oct 08 17:25:34 Router dhcpd[777]: DHCPACK on 192.168.0.100 to 52:54:00:a1:3c:04 (Cliente) via eth1

Con esto ya tenemos configurado el servidor.

Configuración en el cliente

En el lado del cliente, la única configuración que debemos cambiar es en /etc/network/interfaces. En mi caso, quedó así:

conf_cliente.png

Ahora solo debemos ejecutar el siguiente comando:

dhclient eth1

Con esto, el cliente solicitará al servidor que hemos configurado antes una ip y la información que esté configurado para transmitir. Tras la ejecución del comando anterior, mi tarjeta de red quedó configurada de la siguiente forma:

ip_cliente.png

Comprobaciones

Como podemos ver, ha recibido una ip del rango especificado anteriormente. Ahora veamos si ha recibido el resto de la configuración. Para ello nos iremos al fichero /var/lib/dhcp/dhclient.eth1.leases, en el que nos encontramos lo siguiente:

lease {
  interface "eth1";
  fixed-address 192.168.0.100;
  option subnet-mask 255.255.255.0;
  option routers 192.168.0.1;
  option dhcp-lease-time 3600;
  option dhcp-message-type 5;
  option domain-name-servers 8.8.8.8,8.8.4.4;
  option dhcp-server-identifier 192.168.0.1;
  renew 5 2021/10/08 18:04:27;
  rebind 5 2021/10/08 18:27:51;
  expire 5 2021/10/08 18:35:21;
}

Como podemos ver, ha recibido toda la configuración que especificamos antes.

También podemos comprobar en el lado del servidor la lista de concesiones del servidor. Esto se encuentra en el fichero /var/lib/dhcp/dhcpd.leases. En este fichero encontramos lo siguiente:

lease 192.168.0.100 {
  starts 5 2021/10/08 17:35:21;
  ends 5 2021/10/08 18:35:21;
  cltt 5 2021/10/08 17:35:21;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 52:54:00:a1:3c:04;
  uid "\377\000\241<\004\000\001\000\001(\362\366\036RT\000\241<\004";
  client-hostname "Cliente";
}

Se puede observar que la información sobre las horas coincide perfectamente con la parte del cliente.

Con esto hemos acabado de configurar el servidor y hemos comprobado que funciona perfectamente.