Cómo montar un servidor DNS en Linux Debian que servirá para todos los equipos de nuestra red (sean Linux, Windows o MacOS) y que nos permitirá, de forma gratuita, gestionar datos de uso de DNS por cada dispositivo de la red y bloquear la publicidad, entre otras cosas. Usaremos una máquina con Linux Debian 11 y el paquete Pi-Hole para sistema DNS, bloqueador de ADS, acceso a consola web de gestión y supervisión.

Preparar Linux Debian 11 para hacerlo servidor DNS

En primer lugar verificaremos que el equipo tiene una IP estática. Será un servidor de DNS por lo que es muy recomendable que tenga la IP estática y no dinámica. Para revisar la configuración de red editaremos el fichero interfaces con:

Y si tenemos una configuración similar a esta:

La modificaremos a una configuración similar a la siguiente:

En el ejemplo anterior asignaremos la IP 192.168.1.26 a nuestro servidor Linux. Guardaremos los cambios en el fichero pulsando Control + O y cerraremos con Control + X.

Inicialmente estableceremos también los servidores DNS externos del nuestro servidor, editando el fichero /etc/resolv.conf y agregando al final, por ejemplo:

Quedando algo así como:

Para aplicar los cambios ejecutaremos:

Además, si hemos instalado una versión mínima de Debian 11, necesitaremos disponer del comando curl, para instalarlo ejecutaremos:

Instalar Pi-hole en Linux Debian 11

Instalar Pi-hole en Linux Debian 11

Para instalar Pi-hole usaremos el comando curl, debe estar instalado en el equipo (como hemos comentado anteriormente). Instalaremos Pi-hole ejecutando el comando:

Conectará a Internet para descargar el paquete de Pi-hole:

Instalar Pi-hole en Linux Debian 11

Iniciará el asistente de instalación, que es bastante sencillo. En primer lugar nos indicará que el servidor será configurado como un dispositivo network-wide ad blocker (bloqueador de anuncios). Pulsaremos INTRO:

Instalar Pi-hole en Linux Debian 11

Nos advertirá de la recomendación de que el servidor Debian tenga IP estática y no dinámica (como hemos comentado en el primer punto). Seleccionaremos «Sí» y pulsaremos INTRO:

Instalar Pi-hole en Linux Debian 11

Elegiremos el servidor de DNS externo que usará, podemos elegir alguno de la lista o bien establecer alguno personalizado (Custom). En nuestro caso elegiremos «Google (ECS, DNSSEC):

Instalar Pi-hole en Linux Debian 11

Si queremos usar una lista para bloquear anuncios, la seleccionaremos. Por defecto Pi-hole usará «StevenBlack»:

Instalar Pi-hole en Linux Debian 11

Marcaremos «On» para instalar la consola de administración y gestión web de Pi-hole:

Instalar Pi-hole en Linux Debian 11

Marcaremos «On» para instalar el servidor lighttpd y los módulos PHP requeridos:

Instalar Pi-hole en Linux Debian 11

Marcaremos «On» para registrar las consultas (log de peticiones DNS de los clientes):

Instalar Pi-hole en Linux Debian 11

Elegiremos el modo de privacidad:

  • 0 Show everything: para mostrar todos los datos posibles (nombres DNS de los dominios y nombres DNS de los equipos clientes que hacen las peticiones DNS.
  • 1 Hide domains: si queremos que no aparezcan los nombres de los dominios (nombre DNS) de las peticiones de los clientes.
  • 2 Hide domains and clients: si además de ocultar los nombres de los dominios, también queremos ocultar los nombres DNS de los equipos cliente de nuestra red.
  • Anonymous mode: si no queremos mostrar ningún dato adicional.

En nuestro caso elegiremos «0 Show everything» para que muestre toda la información de dominios y clientes (al menos los nombres DNS):

Instalar Pi-hole en Linux Debian 11

El instalador iniciará la instalación de Pi-hole con la configuración establecida. Una vez concluida la instalación mostrará la siguiente ventana, indicando que ya tenemos disponible el acceso a la consola web de gestión/supervisión de Pi-hole, en la URL:

http://IP_Servidor_DNS/admin

Y también nos mostrará la contraseña de acceso «s6szWlGa»:

Instalar Pi-hole en Linux Debian 11

En la consola de Linux también indicará los mismos datos:

Instalar Pi-hole en Linux Debian 11

Configurar cliente Windows para establecer como servidor DNS el equipo Linux Debian con Pi-hole

Para configurar un equipo Windows cliente de nuestra red y que use como servidor DNS el montado anteriormente, únicamente tendremos que acceder a las propiedades de red e indicar en «Servidor DNS preferido» la IP de nuestro servidor DNS Linux Debian, en nuestro caso la 192.168.1.26:

Configurar cliente Windows para establecer como servidor DNS el equipo Linux Debian con Pi-hole

En caso de tener DHCP en nuestra red, podemos modificar el servidor de DHCP para indicarle que propague el DNS 192.168.1.26 (o el que corresponda) a los clientes DHCP:

Configurar cliente Windows para establecer como servidor DNS el equipo Linux Debian con Pi-hole

Acceso a la consola web de Pi-hole para establecer listas negras, listas blancas y revisar las peticiones DNS de los clientes

Tras establecer el servidor DNS a los equipos/dispositivos (Windows, Linux, MacOS, …) de nuestra red, éste empezará a recolectar información. Desde su página inicial (Dashboard) ya tendremos información muy valiosa y sencilla de ver y analizar, como las peticiones totales de DNS que se han hecho en nuestra red, los clientes (equipos/dispositivos que usan nuestro DNS), las consultas bloqueadas, los dominios más pedidos (que más peticiones DNS tienen), los bloqueados,

Acceso a la consola web de Pi-hole para establecer listas negras, listas blancas y revisar las peticiones DNS de los clientes

Podremos consultar los clientes con más peticiones DNS (totales y bloqueadas):

Acceso a la consola web de Pi-hole para establecer listas negras, listas blancas y revisar las peticiones DNS de los clientes

Y ver un log de las peticiones realizadas por cada cliente (tanto las bloqueadas, como el resto):

Acceso a la consola web de Pi-hole para establecer listas negras, listas blancas y revisar las peticiones DNS de los clientes

Como vemos es una herramienta muy sencilla de instalar y configurar y muy útil para agregar un factor de protección más a nuestras conexiones.

Hay que tener en cuenta que Pi-hole NO es un filtrado de contenidos web. Puede filtrar dominios DNS pero no bloqueará tráfico por IP, por ejemplo. Si un usuario accede a una URL bloqueada en Pi-hole (por estar en la lista negra que viene por defecto o por haberla agregado manualmente a la lista negra), el usuario no accederá a esta web si introduce su dirección DNS (url normal), pero sí accederá si conoce la IP.

Pi-hole, por tanto, tampoco tiene categorización de sitios web para poder filtrar por categorías, no es su cometido.

Si queremos bloquear un dominio de Internet (un sitio web), accederemos a «Blacklist» [1], introduciremos el nombre del dominio [2] y pulsaremos «Add to Blacklist» [3]. Pi-hole admite también patrones (desde RegEx filter):

Acceso a la consola web de Pi-hole para establecer listas negras, listas blancas y revisar las peticiones DNS de los clientes

A partir de este momento, cuando los clientes hagan una petición DNS a la URL bloqueada, les mostrará un error en el navegador:

Acceso a la consola web de Pi-hole para establecer listas negras, listas blancas y revisar las peticiones DNS de los clientes

De la misma forma podremos agregar dominios a listas blancas, desde Whitelist, que no serán bloqueados.