Instalación del servicio
Para empezar a utilizar el servidor DHCP debemos instalarlo en nuestro servidor
sudo apt-get install isc-dhcp-server
Estos comandos sirven para encenderlo, ver su estado, reiniciarlo y pararlo.
sudo service isc-dhcp-server start
sudo service isc-dhcp-server status
sudo service isc-dhcp-server restart
sudo service isc-dhcp-server stop
Configuración del servidor DHCP
La configuración más básica consiste en indicar la red y la máscara de la misma
subnet 192.168.1.0 netmask 255.255.255.0 { }
Una vez sabemos esto, podemos pasar a ver los parámetros que se deben escribir dentro de los corchetes anteriores.
El parámetro range, nos indica que IPs podrá dar nuestro servidor DHCP, en este caso podrá dar desde la IP 192.168.1.11
hasta la 192.168.1.20
, las dos incluidas.
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.11 192.168.1.20;
}
Ahora veremos dos parámetros más, el default-lease-time
, y el max-lease-time
, estos dos parámetros indican el tiempo en segundos durante el cual va a ser válida la configuración que el servidor le dé al cliente.
Por ejemplo, si recibo la IP 192.168.1.23
y el default-lease-time
es 600, significa que cuando alcance ese tiempo deberé volver a pedir una IP, la cual por norma general será la misma que la que tenía, ya que el servidor me la reserva hasta que se alcance el max-lease-time.
Esto es útil cuando hay muchos clientes conectados a una red, imaginemos que sigo con la IP anterior, y en un momento dado pierdo la conexión. El servidor me la guardará hasta que se alcance el max-lease-time
, a partir de ese momento estará disponible para cualquier otro dispositivo.
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.11 192.168.1.20;
default-lease-time 600;
max-lease-time 7200;
}
Asignar interfaz de red al servidor DHCP
El servidor de DHCP por defecto actúa a través de todas las interfaces de red conectadas al él. Si queremos que solo actúe a través de una interfaz en concreto, debemos editar un archivo
sudo nano /etc/default/isc-dhcp-server
En este ejemplo supongamos que queremos que solo funcione a través de la interfaz eth1
, deberemos poner el nombre de la interfaz tal que así
INTERFACES="eth1"
Ver logs del servidor DHCP
Para poder ver los logs generados por el servidor DHCP, vamos a utilizar el siguiente comando
cat /var/log/syslog | grep dhcp
Ver configuraciones asignadas
Cliente
Para conocer la configuración que nos ha proporcionado el servidor DHCP, podemos utilizar
dhclient -v eth0
También podemos liberar la configuración utilizando
dhclient -r eth0
Si queremos aplicarlo a todas las interfaces, lo que tenemos que hacer es no especificarla
dhclient -v
dhclient -r
En cambio, si queremos ver el histórico de las configuraciones recibidas, debemos entrar a
sudo cat /var/lib/dhcp/dhclient.leases
Si tenemos varias interfaces, encontraremos los históricos de cada interfaz.
sudo cat /var/lib/dhcp/dhclient.[interfaz].leases
Servidor
En cambio, si queremos ver la configuración que el servidor está proporcionando a los clientes, debemos acceder a
sudo cat /var/lib/dhcp/dhcpd.leases
Ejemplos prácticos
En este primer ejemplo básico, vamos a ver como configurar una red básica, la red será 192.168.1.0/24
, y el DHCP va a proporcionar IPs desde la 192.168.1.2
hasta la 192.168.1.20
, también vamos configurar el tiempo durante el cual va a ser válida la configuración que reciba el cliente, 10 minutos, con un máximo de 2 horas.
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.2 192.20;
default-lease-time 600;
max-lease-time 7200;
}
Una vez realizado el ejemplo anterior, vamos a hacer otra configuración distinta para ver un poco más de configuraciones posibles.
En este ejemplo vamos a suponer que tenemos la red 192.168.1.0/24
, el DHCP va a proporcionar IPs desde la 192.168.1.11
hasta la 192.168.1.60
, es decir, tiene un rango de 50 IPs disponibles, la puerta de enlace va a ser 192.168.1.245
, los DNS que vamos a utilizar son los de Google, 8.8.8.8
y 8.8.4.4
, por último, va la configuración será válida durante 1 hora, con un máximo de 10 horas.
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.11 192.168.1.60;
option routers 192.168.1.254;
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 3600;
max-lease-time 36000;
}
Como hemos podido observar en el ejemplo anterior, ya sabemos configurar la red, la máscara, el rango de IPs disponibles, la puerta de enlace, los DNS, y los tiempos de concesión de la configuración.
Vamos a realizar otro ejemplo, de forma que en este vamos a configurar dos redes distintas, a partir de una IP base, 192.168.1.0/24
, el servidor DHCP tiene como nombre "servidorSXE"
, y la IP 192.168.1.1
.
La primera subred tendrá un rango de 30 hosts, y el dominio será subred1.org, la puerta de enlace y el DNS serán 192.168.1.100
, la configuración será válida durante 5 horas, con un máximo de 10 horas.
La segunda subred tendrá un rango de 30 host, y el dominio será subred2.org
, la puerta de enlace y el DNS serán 192.168.1.200
, la configuración será válida durante un máximo de 12 horas. También será necesario que se indique la IP de broadcast.
server-name servidorSXE;
server-identifier 192.168.1.1;
subnet 192.168.1.0 netmask 255.255.255.128 {
range 192.168.1.11 192.168.1.40;
option domain-name "subred1.org";
option routers 192.168.1.100;
option broadcast-address 192.168.1.127;
option domain-name-servers 192.168.1.100;
default-lease-time 18000;
max-lease-time 36000;
}
subnet 192.168.1.128 netmask 255.255.255.128 {
range 192.168.1.131 192.168.1.160;
option domain-name "subred2.org";
option routers 192.168.1.200;
option broadcast-address 192.168.1.255;
option domain-name-servers 192.168.1.200;
max-lease-time 43200;
}
En este ejemplo, supongamos que partimos de la red 192.168.1.0/24
, queremos dos subredes las cuales tendrán un rango de 50 hosts, además debemos configurar un host llamado server cuya MAC es AA:BB:CC:11:22:33
y tendrá la primera IP disponible de cada subred. Quedaría tal que así.
subnet 192.168.1.0 netmask 255.255.255.192 {
range 192.168.1.2 192.168.1.51;
host server {
hardware ethernet AA:BB:CC:11:22:33;
fixed-address 192.168.1.1;
}
}
subnet 192.168.1.64 netmask 255.255.255.192 {
range 192.168.1.66 192.168.1.115;
host server {
hardware ethernet AA:BB:CC:11:22:33;
fixed-address 192.168.1.65;
}
}
En este último ejemplo, vamos a partir de la red 192.168.1.0/24
para crear dos subredes, la primera tendrá como nombre de dominio "smx1.org"
y una concesión de 1 hora, la segunda subred tendrá como nombre de dominio "smx2.org"
y una concesión de 2 horas, además tendrán de DNS la 10.20.0.1
y la puerta de enlace será la última IP disponible de cada subred.
Además, en la primera subred no se podrán conectar dispositivos desconocidos, mientras que en la segunda si.
En las dos subredes define un rango de 10 IP para cada una.
shared-network {
option domain-name-servers 10.20.0.1;
subnet 192.168.1.0 netmask 255.255.255.128 {
option domain-name "smx1.org";
option routers 192.168.1.126;
default-lease-time 7200;
}
subnet 192.168.1.128 netmask 255.255.255.128 {
option domain-name "smx2.org";
option routers 192.168.1.254;
default-lease-time 3600;
}
pool {
range 192.168.1.1 192.168.1.10;
deny unknown-clients;
}
pool {
range 192.168.1.131 192.168.1.140;
allow unknown-clients;
}
}