GNU/Linux >> Tutoriales Linux >  >> Linux

Pi-Hole - El Triángulo DNS

El Internet moderno es un lugar bastante molesto. Muy a menudo, las actividades inocentes, como leer un texto o mirar videos, se ven interrumpidas por mensajes promocionales, mejor conocidos como anuncios. Esto no sería un problema si los anuncios fueran relevantes, oportunos o no intrusivos, pero a pesar de muchos "progresos" en inteligencia artificial, aprendizaje profundo y otras palabras de moda, no son nada de eso. Entonces, tenemos privacidad y todo eso.

La batalla entre los proveedores de anuncios y los bloqueadores de anuncios continúa. También está aumentando lentamente, a medida que más y más personas se vuelven contra el agresivo modelo publicitario directo. En su mayor parte, si usa una extensión de bloqueo de anuncios en su navegador, ya está todo listo. Pero luego, estás a merced de la compañía del navegador y de lo que permiten, además de que esto no siempre funciona en todos los navegadores y/o sistemas operativos. La solución es completar las solicitudes de red de bloques a los servidores de anuncios, y esto es lo que hace Pi-Hole. Repasemos.

Cómo empezar

Pi-Hole es un agujero negro para los anunciantes de Internet. Es un conjunto de herramientas de software que bloqueará las solicitudes de DNS a los dominios identificados para la publicación de anuncios, de modo que sus sesiones de navegación, o cualquier actividad relacionada con Internet, nunca incluya publicidad. Esta es una solución a nivel de red y, como tal, debería funcionar en todos los escenarios. Los beneficios, además de la reducción del ruido, también incluyen la reducción del volumen de tráfico, la mejora de la privacidad y otras cosas.

Esto me intrigó y decidí configurar Pi-Hole. Ahora, en general, Pi-Hole está diseñado para usarse como un dispositivo. Como su nombre lo indica, es posible que desee usar un dispositivo Raspberry Pi económico, instalar Pi-Hole en él y luego usarlo como filtro de red. Ahí radica el problema número uno:necesita cierta comprensión de las redes para poder configurar Pi-Hole correctamente. En general, una solución Pi-Hole completa cubre:

  • Configuración de un dispositivo que ejecutará el software Pi-Hole:puede ser un sistema dedicado en su red, o puede configurar Pi-hole en cualquier máquina que ejecute Linux. Por ejemplo, si tiene un par de computadoras portátiles o de escritorio con Linux, cada una podría ser su propio filtro de red.
  • El siguiente paso es configurar Pi-Hole como servidor DNS. En esencia, navegamos usando nombres de dominio en lugar de direcciones IP. A los humanos les resulta mucho más fácil recordar algo como dedoimedo.com o example.com que una secuencia de números como 1.2.3.4 o similares. Esto se hace a través del servicio de resolución del Sistema de nombres de dominio (DNS), que hace la traducción de nombres legibles por humanos a números. Pi-Hole puede aplicar sus reglas de filtrado en este punto:si identifica una solicitud a una dirección que considera que pertenece a uno de los anunciantes de Internet, puede descartar esta solicitud y, por lo tanto, dicho contenido nunca se entregará. Por supuesto, esto también puede incluir falsos positivos.
  • El último paso es configurar otros sistemas para usar Pi-Hole como su servidor DNS. Una vez más, esto requiere algunos conocimientos de redes. Pero esto en realidad se aplica a cualquier sistema operativo. Si bien el dispositivo Pi-Hole debe ser Linux, se puede cambiar la configuración de DNS de cualquier máquina para usar el dispositivo y, a partir de ese momento, Pi-Hole será el intermediario, filtrando las solicitudes de red.

Por lo tanto, debe recordar que todo lo anterior requiere experiencia. No puede simplemente conectar y usar casualmente una solución de esta naturaleza en su configuración. Pero si tienes un amigo nerd, es posible que pueda hacer esto por ti. En cuanto a cuán simple o complicado es esto, bueno, continuemos.

Asistente de instalación

Descargué el script y lo ejecuté. Obtiene un asistente basado en texto que es relativamente simple de seguir. Ejecuté esto en KDE neon y solo instaló software de los repositorios del sistema, además de sus propios componentes, que provienen de GitHub.

Debe decirle a Pi-Hole qué DNS usar. Por ejemplo, puede usar su propio enrutador, que normalmente es lo que usarán los sistemas Linux, algo así como 192.168.1.1 o 192.168.2.1 o similar. Las cosas son un poco más difíciles de entender con systemd en su lugar ahora, pero llegaremos allí. También tiene la opción de usar algunos de los DNS de Internet existentes (como Google o CloudFlare). Decidí comenzar con mi configuración personalizada.

Como cualquier bloqueador de anuncios, Pi-Hole usa listas para bloquear anuncios. Este es el eslabón más fuerte y el más débil de la solución, porque si las listas no están actualizadas, son inexactas o están mal hechas, podría haber vacíos o falsos positivos, donde los dominios legítimos son rechazados. Pero para el caso, esto no es diferente al bloqueo de anuncios a través de extensiones de navegador, excepto que es un poco más completo y, por lo tanto, agresivo. La mayoría de las extensiones de navegador aplican reglas solo a dominios de terceros, por lo que las posibilidades de que el dominio esperado no se comporte son relativamente bajas. Pi-Hole está destinado a ser infalible, y eso significa que podría evitar que se carguen sitios legítimos.

La interfaz de usuario web suena como algo agradable. Lo tenía configurado.

Y eso fue todo. Supuestamente, Pi-Hole se instaló y configuró, y ahora podría usarlo.

¿Funcionó?

No. No tenía conexión a Internet:falla en la resolución de nombres. Mi sistema local, neon, se estaba usando a sí mismo como su DNS (o más bien, el Pi-Hole instalado, que estaba usando el enrutador), pero parecía que Pi-Hole no estaba brindando su servicio de resolución.

El problema en este punto es que no puede conectarse porque no tiene Internet, por lo que si desea buscar respuestas, necesita otra máquina. Intenté desinstalar Pi-Hole, y esta fue una solución simple y limpia, y la conectividad se restauró instantáneamente. Lo instalé de nuevo y obtuve los mismos resultados.

Decidí probar algunas comprobaciones de línea de comandos. Pi-Hole viene con varios comandos que le permiten habilitarlo, deshabilitarlo, iniciar el servicio de resolución de nombres, verificar el estado y similares. Resulta que estaba teniendo un problema con algo llamado pihole-FTL. Bueno, está bien.

pihole enable
[i] Habilitación del bloqueo
[✗] pihole-FTL:no se encontró ningún proceso
[✓] Pi-hole habilitado

Intenté ejecutar pihole-FTL, pero no arrancaba. Bueno, resulta que necesitaba sudo. Mirando la documentación en línea, los errores de configuración no están tan bien documentados. Así que parece que he superado mi primer obstáculo en la configuración.

pihole-FTL
FATAL:¡Falló la apertura del registro FTL (/var/log/pihole-FTL.log)!
Asegúrese de que exista y que el usuario neon pueda escribirlo

sudo pihole-FTL
FTL iniciado!

Pero todavía no tenía Internet. Supuse que el servicio de DNS seguía inactivo, así que intenté reiniciarlo.

pihole restartdns
[✗] Error al iniciar pihole-FTL.service:Unidad pihole-FTL.service no encontrada.

Por el error, supuse que no había un archivo de unidad para iniciar el servicio FTL, o que estaba dañado. Buscando en línea, me enteré de que era necesario cambiar el archivo de servicio. Es decir, en /etc/init.d/pihole-FTL, tuve que editar una línea que invoca FTL desde:

su -s /bin/sh -c "/usr/bin/pihole-FTL" "$FTLUSER"

A solo esta línea:

/usr/bin/pihole-FTL

Después de esto, Pi-Hole comenzó sin errores.

sudo pihole restartdns
[✓] Iniciando el servicio DNS

Pi-Hole no estaba bloqueando anuncios

Tenía conectividad, pero los anuncios estaban ahí. Pi-Hole no estaba filtrando nada. Así que decidí acceder a la interfaz de usuario web y ver si podía hacer cambios y ajustes allí. Pero cuando traté de ir a la dirección de Pi-Hole, no había ningún servidor web escuchando. La http://dirección-ip/admin y http://pi-hole/admin no hicieron nada.

Hice algunas pruebas más en la línea de comandos y resultó que el servicio lighttpd no se estaba ejecutando, lo que explicaría por qué no tenía la interfaz de usuario web. Así que era hora de hacer más magia y, de nuevo, la documentación era un poco escasa sobre este tema. Golpeé más errores:

sudo systemctl restart lighttpd.service
El trabajo para lighttpd.service falló porque el proceso de control finalizó con un código de error. Consulte "systemctl status lighttpd.service" y "journalctl -xe" para obtener más información.

Sin embargo, esta vez, como tenía Internet, pude buscar en línea y pronto descubrí el motivo del problema. El siguiente hilo me llevó a la respuesta correcta, aunque no hay NADA en los registros de errores que indique la solución. Y aquí, me gustaría señalar, una vez más, la indescifrable complejidad de systemd. Tuve que buscar información en un registro binario, e incluso entonces, la información fue inútil.

De hecho, me faltaba un paquete, gamin, por qué no se instala como una dependencia de inmediato, ni idea. Pero una vez que lo instalé, lighttpd comenzó bien y la interfaz de usuario web estaba allí para que la explorara.

sudo apt-get install juego

systemctl status lighttpd.service
● lighttpd.service - Lighttpd Daemon
Cargado:cargado (/lib/systemd/system/lighttpd.service; habilitado; proveedor predeterminado:habilitado)
Activo:activo ( en ejecución) desde el jue 2019-05-09 15:34:03 CEST; Hace 2 segundos
Proceso:19060 ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf (código=salido, estado=0/ÉXITO)
PID principal:19069 (lighttpd )
Tareas:6 (límite:4915)
CGroup:/system.slice/lighttpd.service
├─19069 /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd .conf
├─19078 /usr/bin/php-cgi
├─19079 /usr/bin/php-cgi
├─19080 /usr/bin/php-cgi
├─19081 /usr/bin/php-cgi
└─19082 /usr/bin/php-cgi

Inicio de sesión y contraseña de la interfaz de usuario web

Pero todavía no tenía anuncios bloqueados. Así que traté de iniciar sesión y me di cuenta de que tenía otro problema:no podía acceder a la página de administración donde podía verificar todos los registros y detalles, y hacer cambios. Nuevamente, buscando en línea, descubrí que tenía que restablecer la contraseña predeterminada desde la línea de comando:

pihole -a -p

Luego tuve acceso a la configuración de la interfaz de usuario web. Es una interfaz realmente agradable y poderosa. Obtiene muchas opciones, incluida la capacidad de detener temporalmente Pi-Hole, por lo que si encuentra problemas, en lugar de cambiar todo, solo puede pausar el filtrado. No es necesario jugar con la configuración de DNS.

Rellenar listas de bloqueo

Y al pasar por la interfaz, me di cuenta de que mis listas de bloqueo estaban vacías. Sí, esto es evidente en la página principal, pero necesita saber lo que está buscando. ¿Por qué Pi-Hole no le pide que actualice las listas o que haga esto como parte de la configuración? Ejecuté una actualización manual desde la línea de comandos y se generaron las listas.

pihole -g -f

Muy bien, ¿funcionó?

¡Sí, ahora, finalmente estaba funcionando! Pi-Hole ahora estaba cumpliendo con su deber de DNS y también estaba filtrando el tráfico. Tengo que decir que fue efectivo y no intrusivo. Y si no me equivoco, incluso hubo un ligero aumento en el rendimiento en el lado de la red, ya que el sistema tuvo que manejar menos consultas y servir menos contenido. De hecho, incluso con una navegación inocente, se bloqueó el 20% de todas las consultas. Eso suena como mucho. Pero también destaca la situación actual de la Internet moderna. El hecho de que haya más de 100 000 dominios en la lista de bloqueo también cuenta parte de esta triste historia. También explica la suave mejora de la latencia.

Conclusión

Al final del día, tenía Pi-hole funcionando, pero la configuración estaba lejos de ser trivial. Hubo cuatro o cinco problemas cardinales, y ninguno de estos debería haber ocurrido, porque el asistente de instalación podría haber realizado comprobaciones separadas para asegurarse de que todo funcionaba. Parte de la primera ejecución podría ser la verificación del servicio y, si hay problemas, algún tipo de autodiagnóstico para asegurarse de que FTL esté funcionando. Lo mismo se aplica al servicio Web. Luego, está el restablecimiento de la contraseña y la actualización de la lista. Todo esto haría que la experiencia fuera mucho más ágil.

Como producto, Pi-Hole es una herramienta muy agradable y poderosa. Hace su trabajo extremadamente bien, es rápido, efectivo y robusto, y la interfaz de usuario web está muy bien diseñada. También gana algo en el lado del tráfico, ya que hay menos contenido que necesita ser servido y menos consultas por resolver, por lo tanto, mejora el rendimiento para las cosas que importan. La configuración no es trivial, pero se puede lograr, y tiene mucha flexibilidad en la forma en que conecta su red. Podría tener Pi-Hole como un sistema independiente, o podría servir a todos los diferentes dispositivos de su hogar. Con todo, esta es el arma del fin del mundo para cuando Internet se vuelva rebelde contra ti. Vale la pena probarlo, pero recuerda la segunda regla de la termodinámica. No se puede tener trivial y complejo al mismo tiempo.


Linux
  1. Una introducción al editor vi

  2. Cómo instalar el sistema de resolución de DNS Unbound en Ubuntu 22.04

  3. Lanzamiento en Rackspace Cloud

  4. ¿Cuáles son los tipos de servidores DNS?

  5. ¿Qué es la utilidad de línea de comandos de DNS inversa?

EasyOS 2.3 - El moderno Prometheus Tux

Cabina - Autopista a la zona de administración

Y la mejor distro de 2019 es...

CentOS 8 Stream:la distribución streampunk

Revisión de Cairo Dock:el muelle está en los detalles

Copia de seguridad del directorio de inicio:la guía rápida y sucia