Servidor DHCP y DNS local para tu Raspberry Pi

Esta es una de las funciones interesantes a colocar en nuestra Raspberry Pi y muy recomendable para nuestra red local.

Lo “divertido” de esto es poder usar los nombres de las máquinas en vez de usar siempre la IP.

Lo que vamos a hacer es substituir tu DHCP y DNS (si existiesen) por nuestro nuevo y flamante dnsmasq en nuestra superraspi 😀

Si necesitas leer a fondo sobre dnsmaq pulsa.  (Texto en inglés)

Con dnsmasq tendremos… DHCP, DNS y TFTP todo en uno, muy sencillo de configurar y con unos consumos de CPU y RAM mínimos.

Para instalarlo tan solo deberemos entrar en nuestra raspi y ejecutar el comando:

sudo aptitude install dnsmasq   (me gusta más aptitude que apt-get)

sudo apt-get install dnsmasq (para los que os guste más apt)

A los pocos segundos ya lo tendrás configurado y para editar ficheros me gusta parar los servicios

sudo service dsnmasq stop

Antes de proceder a configurar nada debes plantearte ciertas preguntas:

¿Qué rango de IPs voy a usar?

Usualmente para redes privadas se usa 192.168.x.x con una máscara de 24 bits, osea, 255.255.255.0

Este rango nos da para tener 2253 IPs en nuestra red… más que suficientes!!!

Para este documento, los de raspiman proponemos que uses el rango 192.168.0.x / 255.255.255.0. Puedes usar el que quieras, solamente deberás modificar a tu gusto.

Deberás poner el router en el rango escogido.

ATENCION: Si no sabes, no puedes, no quieres, no te atreves a modificar la ip de tu router NO LO HAGAS. A partir de aquí vas a seguir bajo tu responsabilidad y raspiman no se hace cargo de los posibles errores que puedas cometer con tu router de acceso a internet. Normalmente puedes entrar a la configuración de tu router usando el navegador web e introduciendo la IP del mismo. Si tu router es de Movistar normalmente la contraseña por defecto es “1234” y el password lo mismo y si es de Vodafone es “vodafone” y la contraseña lo mismo. También deberás detener el servicio DHCP de tu router si éste estuviera activo.

Pero antes de poder hacer nada, hemos de asignar una IP fija a nuestra Raspberry Pi

Para ello lo que haremos es editar el fichero de configuración de red de nuestra raspberry

nano /etc/network/interfaces

Será algo como esto:

auto lo

iface lo inet loopback
iface eth0 inet dhcp

Y lo dejaremos como lo siguiente:

auto lo

iface lo inet loopback
#iface eth0 inet dhcp

auto eth0
iface eth0 inet static
address 192.168.0.2
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255 
gateway 192.168.0.1

Graba el fichero y por el momento NO reiniciaremos ni los servicios de red ni la resetearemos, no hemos acabado aún y de momento no nos interesa el reiniciar.

Vamos a proceder a configurar nuestro DNS !!!

Editamos el fichero /etc/dnsmasq.conf  y vamos al final del mismo

#conf-dir=/etc/dnsmasq.d

Esta línea la descomentaremos, simplemente borra #

Crearemos un fichero llamado /etc/dnsmasq.d/opciones.conf, usa tu editor favorito, te recomendamos nano por su versatilidad.

nano /etc/dnsmasq.d/opciones.conf

Y lo dejaremos como te mostramos a continuación:

# Especificamos sobre que interfaz actúa dnsmaq
interface=eth0
# Rango de IPs que se asignarán dinámicamente y duración
#estarán asignadas 12h
dhcp-range=192.168.0.101,192.168.0.254,12h
# Puerta de enlace (o sea, el router)
dhcp-option=3,192.168.0.1
# Archivo de DNS externas a nuestra red
resolv-file=/etc/dns_externo.conf

Ahora crea otro nuevo archivo llamado /etc/dns_externo.conf y déjalo como a continuación:

domain MiCasa
search MiCasa
nameserver x.x.x.x
nameserver x.x.x.x

Substituye x.x.x.x por las DNS de tu proveedor de acceso a internet. Realmente puedes poner las que más te gusten, por ejemplo las de Google que son 8.8.8.8 y 8.8.4.4 😀

Seguimos modificando ficheros

Ahora modifica el archivo /etc/resolv.conf para que quede como te muestramos a continuación:

domain Home
search Home
nameserver 192.168.0.2

Explicaremos un poco lo que hemos estado haciendo.

Con el fichero dns_externo.conf le estamos diciendo que si no sabe resolver algún nombre vaya a mirarlo a unos DNS externos a nuestra red y será el fichero que usen para resolver los nombres las máquinas a las que les asignemos una IP

En el fichero resolv.conf le indicamos a nuestro servidor que los DNS los resuelva usando la IP (su IP) y se comportará igual que si fuera un cliente conectado por DHCP (pero no es el caso, le hemos asignado una IP fija).

Bien… llegados a este punto ya prácticamente hemos finalizado, tan solo nos queda un par de cosillas más.

Para ello modificaremos el fichero /etc/default/dnsmasq para que la entrada ENABLED quede como ENABLED=1. Esto activará nuestro DNS local.

Ahora ya estamos en posición de poder reiniciar nuestra raspi para que todas las configuraciones que hemos realizado funcionen.

Debes saber que en una red solamente puede haber un DHCP pero vamos a probar nuestra configuración arrancando un momento nuestro servidor DHCP y DNS para ver si nos muestra algún error.

sudo service dnsmasq start && sleep 10 && sudo service dnsmasq stop

Si no hay ningún error, puedes reiniciar tu raspi. Si existen errores, repasa el documento.

sudo reboot

Cuando tu raspi se inicie, recuerda, la nueva IP es 192.168.0.2 (o aquella que hayas escogido previamente)

Llegado a este punto vamos a cambiar la IP de tu router y a desactivar el DHCP del mismo.

Repetimos, BAJO TU RESPONSABILIDAD.

Abres el navegador, introduces la IP de tu router y te identificas (en cada router puede ser diferente)

En un router vodafone lo tienes en el apartado Router/LAN

Introduces la IP que te interese y detienes el servidor DHCP, grabas la configuración y reinicias el router.

Una vez tengas esto hecho… ya tienes tu DHCP y DNS corriendo en tu raspberry pi !!!!

Para probarlo, pues haces un ping al nombre de tu raspi que por defecto viene como raspberrypi. Si quieres cambiarlo modifica el fichero /etc/hostname y ponle el nombre que más te guste 😀

En mi caso una de mis máquinas se llama “timelapse” (ya hablaremos de ella más adelante)

ping -c4 timelapse
PING timelapse (192.168.0.9) 56(84) bytes of data.
64 bytes from timelapse (192.168.0.9): icmp_req=1 ttl=64 time=2.10 ms
64 bytes from timelapse (192.168.0.9): icmp_req=2 ttl=64 time=2.64 ms
64 bytes from timelapse (192.168.0.9): icmp_req=3 ttl=64 time=2.43 ms
64 bytes from timelapse (192.168.0.9): icmp_req=4 ttl=64 time=2.18 ms

Para finalizar, una de las cosas chulas de dnsmasq es que usa el /etc/hosts del servidor que lo ejecuta para resolver nombres internos y donde podremos definir los nombres de nuestras máquinas internas.

# RaspberryPI hosts configuration file
127.0.0.1 localhost Servidor
192.168.0.10 Servidor
192.168.0.1 adsl
192.168.0.200 router1
192.168.0.201 router2
192.168.0.9 timelapse

 

Pero… aún podemos hacerlo más interesante

¿Qué ocurre si queremos, por ejemplo, evitar servidores que cargan las webs de publicidad? Que sabiendo esa dirección podemos evitarlo y que nos salgan molestos banners cuando navegamos.

Si definimos por ejemplo 127.0.0.1 www.google.es google.es “negamos” que nuestra red entre a google 😉

El resto ya lo dejamos a tu imaginación

Cada vez que hagamos un cambio deberemos “recargar” el servicio dnsmasq con sudo service dnsmasq reload

Con unos pequeños y sencillos pasos hemos hecho que nuestra pequeña raspi de servicio DHCP y de nombres a nuestra red.

Poco a poco añadiremos servicios y veréis todo lo que puede dar de si una raspberry!!!

3 pensamientos en “Servidor DHCP y DNS local para tu Raspberry Pi”

    1. En algunas distribuciones la localización de los ficheros de configuración pueden estar en otras ubicaciones pero las configuraciones son las mismas.
      Saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *