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
- Configuración de red de los clientes
- Pruebas de concesiones
- Realización de reservas
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».
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».
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.
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.