Tabla de Contenidos

DNS y DHCP con dnsmasq

A los efectos de este tutorial, asumiremos que se utiliza una versión reciente de Debian.

¿Que es dnsmasq?

Dnsmasq es un transportador DNS y servidor DHCP ligero. Está diseñado para redes pequeñas que pueden utilizar NAT y se conectan a internet via acceso telefónico, cable o una conexión ADSL, pero puede ser adecuado para cualquier red de hasta unos 1000 clientes, donde sea importante el bajo consumo de recursos y la facilidad de configuración. Además, ofrece soporte para BOOTP/TFTP/PXE, por lo que puede ser una buena opción para un pequeño laboratorio de clientes ligeros.

Instalación

Dnsmasq está incluido en el repositorio, de manera que para instalarlo basta con ejecutar los comandos habituales:

sudo aptitude update
sudo aptitude install dnsmasq

Configuración

Dnsmasq ofrece una cantidad considerable de opciones, pero en este tutorial no le abrumaremos con todo esto, pues el archivo de configuración (/etc/dnsmasq.conf) viene con muchos ejemplos de uso, y también puede consultar el manual para más información acerca de los diversos parámetros con los que puede ejecutarse.

Nos concentraremos entonces en hacer una instalación funcional, digamos para una red de unas 10 computadoras, donde dos de ellas deben tener siempre la misma dirección IP. Para esto básicamente tendremos que editar el archivo de configuración de dnsmasq:

sudo editor /etc/dnsmasq.conf

Interfaces

Dnsmasq permite seleccionar por qué interfaz de red debe o no “escuchar”. En el archivo de configuración, buscamos la línea que dice #interface= y después de quitarle la marca de comentario (#), podremos establecer el valor deseado, por ejemplo:

interface=eth0

DNS sencillo

Dnsmasq normalmente se encarga de consultar a los servidores DNS padres y de entregar esta información al resto de los clientes de la red, pero además puede buscar los nombres de las máquinas en el archivo /etc/hosts de la máquina donde se instale el servicio, lo cual constituye una manera simple de establecer los nombres de máquinas importantes como servidores, sin tener que mantener un /etc/hosts en cada máquina o complicarse con la instalación y configuración de bind.

En nuestro caso, llenaremos la información de las dos computadoras que tendrán IPs estáticas, para lo cual debemos editar el archivo hosts:

sudo editor /etc/hosts

Lo podremos dejar aproximadamente así:

127.0.0.1     localhost
192.168.0.2   maquina1.midominio.cu   maquina1
192.168.0.3   maquina2.midominio.cu   maquina2

Un detalle a tener en cuenta es que por defecto, la propia PC donde está instalado dnsmasq no utiliza dicho servicio. Si deseamos que lo haga, debemos colocar en el archivo /etc/resolv.conf solo la dirección de la PC local, por ejemplo:

domain midominio.cu
search midominio.cu
nameserver 127.0.0.1

Posteriormente habría que agregar los servidores DNS padres en el propio archivo de configuración de dnsmasq:

sudo editor /etc/dnsmasq.conf

Buscamos la línea que dice #server=/localnet/192.168.0.1, le quitamos la marca de comentario si deseamos, y a continuación podemos colocar nuestros servidores DNS padres; si usamos a Citmatel como ejemplo, las líneas quedarían así:

server=/localnet/192.168.0.1
server=169.158.128.136
server=169.158.128.88
server=169.158.128.156

Servicio DHCP

Por defecto, el servicio DHCP está deshabilitado. Para habilitarlo existen diferentes opciones bien ejemplificadas en el archivo de configuración.

En nuestro caso otorgaremos direcciones IP estáticas con vigencia ilimitada a dos máquinas según la dirección MAC de su tarjeta de red y el nombre, respectivamente, y el resto las configuraremos como IP dinámicas, con un plazo de vigencia de 36 horas.

Editamos el archivo de configuración, y buscamos la línea que dice #dhcp-range=192.168.0.50,192.168.0.150,12h y simplemente la descomentamos y modificamos para que quede así:

dhcp-range=192.168.0.50,192.168.0.150,36h

Esto nos reservará 100 direcciones IP (entre la 50 y la 150) que serán las utilizadas dinámicamente por los clientes.

Ahora, configuremos las IPs estáticas. Para esto editamos el archivo de configuración, buscamos la línea que dice #dhcp-host=11:22:33:44:55:66,192.168.0.60 y ponemos lo siguiente:

dhcp-host=11:22:33:44:55:66,192.168.0.2,infinite

Con esto se asignará la dirección IP 192.168.0.2 a la computadora cuya tarjeta de red tiene la dirección MAC 11:22:33:44:55:66 1)

Luego buscamos la línea que dice #dhcp-host=bert,192.168.0.70,infinite y solo le quitamos el comentario y cambiamos el nombre de la computadora y su IP:

dhcp-host=maquina2,192.168.0.3,infinite

Con esto se asignará la dirección IP 192.168.0.3 a la computadora que tiene el nombre maquina2.

Efectuar los cambios

Finalmente, solo tendremos que reiniciar el servicio dnsmasq:

sudo service dnsmasq restart

Es todo, ya nuestro DHCP debe estar funcionando. ¿Sencillo, verdad?

Atribuciones

1)
Evidentemente, la dirección MAC debe ser la real de la tarjeta, que se puede averiguar fácilmente con el comando ifconfig -a desde Linux, o ipconfig /all desde Windows.