Servidor DNS y servidor DHCP con dnsmasq
Cuando las IPs de los PCs de nuestra red son dinámicas, se nos presenta un problema para utilizar un servidor DNS ya que
el mismo PC, hoy puede tener una IP y mañana puede tener otra IP diferente. Dicho problema se puede resolver de tres
formas:
Utilizando un servidor DNS dinámico: Los PCs, al recibir la IP del servidor DHCP, informarán al servidor DNS dinámico de
la IP que les ha sido asignada de forma dinámica y así poder asociar de forma correcta el nombre con la IP que tiene en un
momento dado. El inconveniente de este método es que nos obliga a instalar en los PCs un servicio que informe al servidor
DNS dinámico de los cambios de IP de cada PC. Es similar al sistema utilizado por los servidores DNS dinámicos de Internet
como www.no-ip.org o www.dyndns.com. Aquí no hablaremos de servidores DNS dinámicos porque las dos soluciones
siguientes son más sencillas.
Utilizando reservas de DHCP: En el servidor DHCP existe la posibilidad de establecer una configuración concreta a un
cliente concreto identificándolo por la dirección MAC de su tarjeta de red. Si configuramos tantas reservas de IPs como PCs
hay en nuestra red, podríamos configurar a cada PC la IP que deseemos. Esto sería como tener IPs fijas en nuestra red, pero
asignadas por DHCP. Esta idea no es para nada descabellada y nos permitiría controlar en todo momento la IP de cada PC.
Utilizando el servidor DHCP de dnsmasq: Dnsmasq, además de ofrecernos un servidor DNS, nos ofrece también un
servidor DHCP fácilmente configurable que además resolverá los nombres de los PCs de nuestra red aún cuando sus IPs
hayan sido configuradas por DHCP. Para configurar el servidor DHCP de dnsmasq debemos editar el archivo de
configuración /etc/dnsmasq.conf y añadir una línea como esta: dhcp-range=ip-inicial,ip-final, tiempo de cesión.
Ejemplo, si queremos que el DHCP utilice el rango desde 192.168.1.201 hasta 192.168.1.230 y que la cesión dure 24 horas,
editaremos /etc/dnsmasq.conf y añadiremos la siguiente línea:
//Editar /etc/dnsmasq.conf para establecer el rango DHCP
//Añadir la siguiente línea:
dhcp-range=192.168.1.201,192.168.1.230,24h
No es necesario realizar más configuraciones porque dnsmasq proporcionará, además de la IP, la misma máscara que el
servidor, la misma puerta de enlace que el servidor y como servidor DNS, enviará la IP del servidor ya que el servidor
dnsmasq es también servidor DNS. Cuando los PCs clientes pidan una IP al servidor DHCP, normalmente el cliente
suministrará su nombre de PC. Dicho nombre será utilizado por dnsmasq para asociarlo a la IP que le ha sido asignada al PC
y así resolver correctamente cualquier consulta DNS.
A medida que el servidor DHCP va concediendo IPs a todos los PCs que se la solicitan, éste va almacenándolas en el
archivo de concesiones /var/lib/misc/dnsmasq.leases donde guarda la fecha y la hora de la cesión en formato %s (para
información sobre dicho formato, ejecutar el comando: man date) la MAC del cliente, la IP concedida al cliente y el nombre del
PC cliente siempre y cuando el cliente haya enviado su nombre de PC.
//Archivo donde aparecen las IPs asignadas a cada PC
/var/lib/misc/dnsmasq.leases
Para que dnsmasq pueda conocer el nombre del cliente, éste deberá enviar su nombre cuando realiza la petición DHCP. En
los clientes Linux, el nombre que envía el PC cliente, suele almacenarse en el parámetro send host-name del archivo de
configuración del cliente dhcp: /etc/dhcp3/dhclient.conf. Ejemplo, si nuestro PC se llama aula1pc1, deberemos configurarlo en
el cliente dhcp:
//Para que el cliente envíe el nombre del PC, debemos
//crear archivo /etc/dhcp/dhclient.conf con el siguiente contenido:

Si no arranca dnsmasq
Probando dnsmasq con máquinas virtuales
send host-name aula1pc1
Lo normal es que dicho nombre coincida con el nombre del PC almacenado en el archivo /etc/hostname.
En los siguientes ejemplos podemos ver las posibilidades de configuración DHCP que proporciona dnsmasq. Dichas
configuraciones deben realizarse en el archivo /etc/dnsmasq.conf:
#Rango de cesión desde la 50 a la 150, durante 12 horas
dhcp-range=192.168.0.50,192.168.0.150,12h
#Reserva de IPs para asignar siempre la 192.168.0.60 al PC cuya MAC sea 11:22:33:44:55:66
dhcp-host=11:22:33:44:55:66,192.168.0.60
#Asignar nombre aula1pc1 e IP 192.168.0.60 durante 45 minutos, al PC cuya MAC sea 11:22:33:44:55:66
dhcp-host=11:22:33:44:55:66,aula1pc1,192.168.0.60,45m
#Al PC cuya MAC sea 11:22:33:44:55:66 ignorarle (no asignar IP)
dhcp-host=11:22:33:44:55:66,ignore
#Por defecto dnsmasq configura la puerta de enlace de los clientes con la IP del servidor dnsmasq
#Si la puerta de enlace es otra IP, se debe forzar otro router distinto
dhcp-option=3,192.168.1.254
Como dnsmasq dispone de servidor DNS y servidor DHCP, no es necesario instalar otro servidor DCHP ni otro servidor DNS.

Cada cambio no olvide reiniciar el servidor

// Arrancar o reiniciar el servicio dnsmasq
sudo /etc/init.d/dnsmasq restart