Servidor DHCP en Debian Jessie

Volvemos para seguir con el proyecto, en este caso explicaremos la instalación y configuración del servidor DHCP en Debian. Con lo que los clientes obtendrán la configuración de sus interfaces de red automáticamente sin la necesidad de tener que configurarlos uno a uno.

En este apartado veremos lo siguiente:


Instalación y configuración del servidor DHCP

El paquete que usaremos como servidor DHCP es isc-dhcp-server que instalaremos y configuraremos a continuación.

Instalación

Para instalar el servidor DHCP  escribimos lo siguiente en la línea de comandos siendo «root»:

aptitude install isc-dhcp-server

Configuración

Ahora lo primero que haremos será indicar por qué interfaz trabajará el servidor DHCP, en nuestro caso eth1. Para ello editamos el archivo /etc/default/isc-dhcp-server  siendo «root», dejando la última línea tal que así:

INTERFACES="eth1"

Si queremos ofrecer la siguiente configuración de red:

  • Red: 192.168.0.0
  • Máscara de red: 255.255.255.0
  • Rango: 192.168.0.3-192.168.0.253
  • Puerta de enlace: 192.168.0.254
  • Dirección broadcast: 192.168.0.255
  • DNS: 192.168.1.1
  • Nombre de dominio: elolimpo.org

Entonces editamos el archivo de configuración del DHCP /etc/dhcp/dhcpd.conf siendo «root», añadiendo la siguiente sección al final del archivo:

subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.3 192.168.0.253;
  option routers 192.168.0.254;
  option broadcast-address 192.168.0.255;
  option domain-name-servers 192.168.1.1;
  option domain-name "elolimpo.org";
}

Donde cada uno de los parámetros significan lo siguiente:

  • subnet: dirección de red donde va a trabajar el servidor DHCP.
  • netmask: mascara de red.
  • range: rango de IPs que va a repartir el servidor DHCP.
  • option routers: puerta de enlace predeterminada.
  • option broadcast-address: dirección de multidifusión.
  • option domain-name-servers: nombres o direcciones de servidores DNS.
  • option domain-name: nombre de dominio de la red.

Reiniciamos el servidor DHCP siendo «root»:

systemctl restart isc-dhcp-server

Configuración de red de los clientes

Finalmente solo nos queda configurar las interfaces de red de los clientes de forma dinámica y que renueven la configuración, os enseñaré varias formas:

  • En Windows desde línea de comandos:

Entramos en la CMD de Windows como administrador. Primero debemos identificar cual es la interfaz/adaptador que queremos configurar de forma dinámica, para ello escribimos lo siguiente en la CMD:

netsh interface ipv4 show address
Configuración para la interfaz "Conexión de área local"
    DHCP habilitado:                         Sí
    Dirección IP:                           192.168.0.3
    Prefijo de subred:                        192.168.0.0/24 (máscara 255.255.255.0)
    Puerta de enlace predeterminada:                   192.168.0.254
    Métrica de puerta de enlace:                       0
    Métrica de interfaz:                      10

Configuración para la interfaz "Loopback Pseudo-Interface 1"
    DHCP habilitado:                         No
    Dirección IP:                           127.0.0.1
    Prefijo de subred:                        127.0.0.0/8 (máscara 255.0.0.0)
    Métrica de interfaz:                      50

En mi caso la interfaz será "Conexión de área local" . Teniendo esto configuraremos esa interfaz para que se configure de manera dinámica con el siguiente comando:

netsh interface ipv4 set address name="Conexión de área local" source=dhcp

Automáticamente la interfaz se configurará sola, si no es vuestro caso soltaremos la configuración actual con el comando ipconfig /release y volvemos a pedir una nueva configuración escribiendo ipconfig /renew .

  • En Windows desde interfaz gráfica:

Entramos en el explorador de Windows y accedemos a  la ruta Panel de control\Todos los elementos de Panel de control\Centro de redes y recursos compartidos .

Hacemos clic en «Conexión de área local», «Propiedades», seleccionamos «IPv4», «Propiedades». Y elegimos la opción de «Obtener una dirección IP automáticamente».

Captura de pantalla de 2017-01-31 23:37:04.png

Automáticamente la interfaz se configurará sola, si no es vuestro caso soltaremos la configuración actual con el comando ipconfig /release y volvemos a pedir una nueva configuración escribiendo ipconfig /renew .

  • En Linux desde línea de comandos:

Utilizaríamos esta forma si no tuviéramos instalado «Network-manager».

Editamos el archivo /etc/network/interfaces siendo «root» y lo dejamos de la siguiente manera:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Reiniciamos el servicio «Networking» con systemctl restart networking siendo «root».

Soltamos la configuración actual con el comando dhclient -r y volvemos a pedir una nueva configuración escribiendo dhclient .

  • En Linux desde interfaz gráfica:

Utilizaríamos esta forma si tenemos instalado «Network-manager».

Dependiendo de la interfaz gráfica que tengamos instalada en nuestra distribución de Linux será de una manera u otra pero son muy parecidas. En mi caso explicaré la forma en el entorno «Xcfe» en Debian Jessie.

Entramos en «Menú de aplicaciones», Configuración», «Conexiones de red», seleccionamos la red que en mi caso es «Wired connection 1» y hacemos clic en «Editar».

Captura de pantalla de 2017-02-01 00:16:22.png

Una vez dentro accedemos a la pestaña «Ajustes de IPv4», seleccionamos «Automático (DHCP)» de la lista desplegable de «Método:» y guardamos. Solo quedaría pulsar el icono de red de la parte superior derecha de la pantalla y hacer clic en nuestro caso en «Wired conection 1» para que se establezca la configuración.

Captura de pantalla de 2017-02-01 00:25:02.png


Pruebas de concesiones

Ahora podemos verificar que el servidor DHCP funciona con las siguientes pruebas:

Prueba del servidor

Si queremos ver las concesiones que ha ofrecido nuestro servidor solo tenemos que visualizar el archivo /var/lib/dhcp/dhcpd.leases y en nuestro caso fijarnos en las 2 últimas concesiones de los clientes que serán los primeros 2 apartados del archivo.

lease 192.168.0.3 {
  starts 1 2017/01/23 20:59:26;
  ends 1 2017/01/23 21:09:26;
  cltt 1 2017/01/23 20:59:26;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 08:00:27:27:1c:d8;
  uid "\001\010\000''\034\330";
  client-hostname "hades";
}
lease 192.168.0.4 {
  starts 1 2017/01/23 20:59:26;
  ends 1 2017/01/23 21:09:26;
  cltt 1 2017/01/23 20:59:26;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 08:00:27:96:8d:95;
  client-hostname "poseidon";
}

Prueba de Windows

Entramos en la «cmd» de Windows y escribimos ipconfig /all para ver la configuración que nos han dado:

Adaptador de Ethernet Conexión de área local:

   Sufijo DNS específico para la conexión. . : elolimpo.org
   Descripción . . . . . . . . . . . . . . . : Adaptador de escritorio Intel(R) PRO/1000 MT
   Dirección física. . . . . . . . . . . . . : 08-00-27-27-1C-D8
   DHCP habilitado . . . . . . . . . . . . . : sí
   Configuración automática habilitada . . . : sí
   Vínculo: dirección IPv6 local. . . : fe80::9133:9b9:8873:450b%11(Preferido)
   Dirección IPv4. . . . . . . . . . . . . . : 192.168.0.3(Preferido)
   Máscara de subred . . . . . . . . . . . . : 255.255.255.0
   Concesión obtenida. . . . . . . . . . . . : lunes, 23 de enero de 2017 21:59:33
   La concesión expira . . . . . . . . . . . : lunes, 23 de enero de 2017 22:49:40
   Puerta de enlace predeterminada . . . . . : 192.168.0.254
   Servidor DHCP . . . . . . . . . . . . . . : 192.168.0.254
   IAID DHCPv6 . . . . . . . . . . . . . . . : 235405351
   DUID de cliente DHCPv6. . . . . . . . . . : 00-01-00-01-1F-72-AD-6F-08-00-27-CE-85-A1
   Servidores DNS. . . . . . . . . . . . . . : 192.168.1.1
   NetBIOS sobre TCP/IP. . . . . . . . . . . : habilitado

Prueba de Linux

Entramos en la «terminal» de Linux y escribimos ip a para ver la configuración que nos han dado:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:96:8d:95 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.4/24 brd 192.168.0.255 scope global dynamic eth0
       valid_lft 393sec preferred_lft 393sec
    inet6 fe80::a00:27ff:fe96:8d95/64 scope link 
       valid_lft forever preferred_lft forever

Realización de reservas

Ahora bien si necesitamos que uno de los clientes tenga una reserva de la Ip debemos volver a editar el archivo de configuración del servidor DHCP.

Reserva para Linux

En nuestro caso le realizaremos una reserva al cliente Linux (poseidon) de la Ip 192.168.0.5 el cuál tiene la dirección física (MAC) 08:00:27:96:8d:95 , entonces añadiremos la siguiente sección al final del archivo /etc/dhcp/dhcpd.conf siendo «root»:

host poseidon {
  hardware ethernet 08:00:27:96:8d:95;
  fixed-address 192.168.0.5;
}

Reiniciamos el servidor DHCP siendo «root»:

systemctl restart isc-dhcp-server

Configuración de red de Linux

Ahora el cliente debe de renovar su configuración.

Entramos en la «terminal» de Linux y escribimos lo siguiente para liberar la concesión:

dhclient -r

Escribimos lo siguiente para recibir la reserva:

dhclient

Prueba de la reserva en Linux

Comprobamos que se ha realizado la reserva escribiendo ip a en la «terminal» de Linux:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:96:8d:95 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.5/24 brd 192.168.0.255 scope global dynamic eth0
       valid_lft 598sec preferred_lft 598sec
    inet6 fe80::a00:27ff:fe96:8d95/64 scope link 
       valid_lft forever preferred_lft forever

Por último añadir unas curiosidades:

  • Si el servidor DHCP deja de funcionar,  cuando acabe el tiempo máximo de concesión, el cliente Linux se quedará sin configuración de red y el cliente Windows adoptará la configuración que ofrece APIPA.
  • Si cambiamos la configuración del servidor DHCP (el rango por ejemplo), cuando acabe el tiempo por defecto de concesión, Linux adoptará la nueva configuración pero Windows adoptará la que le ofrece APIPA, y cuando acabe el tiempo máximo de concesión, Windows ya sí adoptará la nueva configuración.

Deja un comentario