Servicio DHCP

Servicio DHCP

66 Ubuntu 16.04 Linux Servidor Redes

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;
}

}