Servidor DHCP (siglas en inglés de Dynamic Host Configuration Protocol, en español «protocolo de configuración dinámica de host») es un servidor que usa protocolo de red de tipo cliente/servidor en el que generalmente un servidor posee una lista de direcciones IP dinámicas y las va asignando a los clientes conforme éstas van quedando libres, sabiendo en todo momento quién ha estado en posesión de esa IP, cuánto tiempo la ha tenido y a quién se la ha asignado después.
Así los clientes de una red IP pueden conseguir sus parámetros de configuración automáticamente. Este protocolo se publicó en octubre de 1993, y su implementación actual está en la «RFC 2131». Para DHCPv6 se publica el «RFC 3315».
Instalación servidor DHCP en debian Jessie
El paquete necesario para la instalación de un servidor DHCP es el siguiente apt-get install isc-dhcp-server
Configurar isc-dhcp-server en debian Jessie
Dentro del fichero /etc/default/isc-dhcp-server
, vamos a especificar la interfaz por la cual va a asignar direcciones IP a nuestros clientes
INTERFACES=[Nombre de interfaz]
Configurar servidor
Y por ultimo debemos configurar el rango de IP que vamos a asignar para ello modificaremos el fichero /etc/dhcp/dhcpd.conf
y ahi añadimos las siguientes lineas
subnet 192.168.100.0 netmask 255.255.255.0 { #rango range 192.168.100.10 192.168.100.253; #puerta de enlace option routers 192.168.100.1; #dns option domain-name-servers 8.8.8.8; #broadcast option broadcast-address 192.168.1.255; }
Y reiniciamos el servicio /etc/init.d/isc-dhcp-server restart
Asignar IP a un cliente
Para ello solo deberemos desde un cliente conectado a la misma red que el servidor el siguiente comando dhclient [Interfaz]
Una vez asignada la ip por DHCP realizamos un ip a
para comprobar la dirección asignada
Añadir regla de IPTABLES y activar el bit de Forwarding para hacer NAT
Al realizar esta accion vamos a hacer que los clientes conectados al servidor tenga acceso a la red externa, es decir, tengan internet.
Eliminamos la regla de encaminamiento por defecto
Para eliminar la regla por defecto es tan facil como ejecutar un ip r del default
Agregar regla de IPTABLES
Una vez borrada en el servidor agregaremos una regla de iptables la cual haga nat para salir hacia fuera y poder tener acceso a internet desde los clientes:
root@servidor:/home/vagrant# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth1 -j MASQUERADE
Donde la dirección (192.168.100.0/24) es la ip de la red desde la cual queremos conectarnos y «eth1» es la interfaz que esta conectada por bridge.
Añadimos regla de encaminamiento en el cliente
root@cliente1:/home/vagrant# ip r add default via 192.168.100.1 dev eth1
Activamos el bit de forwarding en el servidor
Debemos activar en la máquina servidor el bit de forwarding con echo 1 > /proc/sys/net/ipv4/ip_forward
para activar el reenvío de paquetes.
Reservas de IP
Para configurar que un cliente especifico se le asigne una direccion debemos añadir lo siguiente en el fichero etc/dhcp/dhcp.conf
:
host server1 { hardware ethernet 08:00:27:ce:6f:58; fixed-address 192.168.100.70; }
Antes:
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:ce:6f:58 brd ff:ff:ff:ff:ff:ff inet 192.168.100.61/24 brd 192.168.100.255 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fece:6f58/64 scope link valid_lft forever preferred_lft forever
Reiniciamos el servicio /etc/init.d/isc-dhcp-server restart
, al tener un tiempo de concesión elevado forzamos que vuelva a rellenar la interfaz con la nueva configuración:
root@cliente1:/home/vagrant# dhclient -r root@cliente1:/home/vagrant# dhclient eth1
Despues:
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:ce:6f:58 brd ff:ff:ff:ff:ff:ff inet 192.168.100.70/24 brd 192.168.100.255 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fece:6f58/64 scope link valid_lft forever preferred_lft forever
Script en python que de información de las concesiones del servidor
- infodhcp.py -l: Nos muestra todas las ips que están concedidas (las reservas también). Nos da información de los dos ámbitos.
- infodhcp.py x.x.x.x : Nos dice si esa ip está concedida y a que MAC corresponde.
Lo podeis encontrar en mi Github
[…] Las direcciones IP pueden variar según nuestro servidor DHCP nos asigne […]