Traducimos la red doméstica a DoH u otro clic en el filtro de nariz

Después del anuncio relativamente reciente por parte de Mozilla del lanzamiento del soporte para DNS sobre HTTPS (DoH) en producción en la red, las disputas continúan si esto es malo o bueno. En mi opinión, la posición del "mal" se basa principalmente en el hecho de que, al mismo tiempo, manipular sus consultas de DNS, incluso con fines útiles para usted, será difícil, por lo que por ahora sigo en la posición de "bueno".
imagen


En la Federación de Rusia, los operadores de telecomunicaciones, que se encuentran en condiciones muy estrictas según nuestra legislación, se ven obligados a construir sofisticados sistemas de varios niveles para bloquear el acceso al contenido prohibido por Roskomnadzor en la Federación de Rusia, en uno de los niveles en los que la intercepción de DNS funciona más o menos exitosamente. El uso de DoH te permitirá superar este nivel, lo que junto con el uso de VPN puede hacerte la vida un poco más fácil. Tenga en cuenta que una solución en sí misma no puede salvarlo del bloqueo, porque apenas hay un proveedor en Rusia que se base solo en el filtrado a través de DNS. Necesita alguna otra opción para evitar el bloqueo, por ejemplo, una VPN, una de las descritas en mis artículos anteriores.


Es paradójico, pero en el panóptico actual, el operador de telecomunicaciones no lo amenaza con evitar sus bloqueos (utilizando herramientas especiales para esto), por lo que si tiene miedo de dañarlo de esta manera, estos temores son en vano.


Pero cambiar a un navegador especial para evitar la intercepción de DNS no es nuestra forma. Nuestra forma es transferir todos los dispositivos de su red doméstica a DoH, de manera rápida, eficiente y sin mano de obra innecesaria.


Descargo de responsabilidad


Dado que no es muy legal publicar métodos para evitar el acceso a la información prohibida en el territorio de la Federación de Rusia, el propósito de este artículo será hablar sobre un método que le permita automatizar el acceso a los recursos que están permitidos en el territorio de la Federación de Rusia, pero debido a las acciones de alguien que no son directamente accesibles a través de su proveedor. Y el acceso a otros recursos obtenidos como resultado de las acciones del artículo es un efecto secundario desafortunado y el objetivo del artículo no es en modo alguno.


TL; DR


Estamos implementando nuestro propio servidor DNS basado en Pi-Hole usando Cloudflare DoH para consultas al mundo. El objetivo es cifrar todas las consultas de DNS y evitar el filtrado del operador a través de la intercepción de DNS de esta manera. Una ventaja útil es filtrar anuncios.


No se abre el conocimiento mágico, una simple instrucción paso a paso para aquellos que no quieren comprender todas las complejidades.


¿Qué necesitas para esto?


  1. Confía en Cloudflare. Este es realmente un punto muy importante, porque en la implementación descrita todas las consultas de DNS son procesadas por el servicio Cloudflare. Si no confía en él, deberá implementar otra solución (y esto es un poco más complicado que el descrito, pero el objetivo de este artículo no lo es).
  2. Para poder admitir un servidor Linux en ejecución constante en su red doméstica que manejará las consultas DNS de sus dispositivos. El requisito de Pi-Hole es de 512M de RAM (sin embargo, no verifiqué el trabajo con un volumen más pequeño). Si su enrutador o NAS es capaz de máquinas virtuales, esta es una excelente opción, si una Raspberry Pi u otra microcomputadora en el ARM se encuentra en algún lugar del estante, no menos bueno, si la granja virtual en ESXi está zumbando en los entrepisos en el corredor, lo que le estoy diciendo, usted y sabes todo por ti mismo. Si no tiene nada de esto, las soluciones más jóvenes, como Orange Pi Zero, se pueden encontrar en el mercado secundario para unidades de cientos de rublos o traídas de Ali por más o menos el mismo dinero. Pero la elección de la plataforma está más allá del alcance de este artículo, por lo que creemos que tiene algo. Sin embargo, las preguntas sobre este tema se pueden hacer en los comentarios.
  3. Debe estar familiarizado con Linux y las redes. O al menos quiero tener una idea así. Como no estoy listo para abrazar la inmensidad esta vez, tendrás que estudiar algunos momentos incomprensibles para ti. Sin embargo, por supuesto, responderé preguntas específicas en los comentarios y es poco probable que sea el único que responda, así que no dude en preguntar.

Datos de origen


La dirección IPv4 de nuestro servidor en la red doméstica es 192.168.1.10 y se asigna como estática.


La configuración en Linux se realiza desde la raíz (es decir, antes de comenzar la configuración, ejecutamos el comando sudo su ).


Brevemente: la lógica de la solución


  1. Instalar y configurar Pi-Hole
  2. Instalar y configurar cloudflared
  3. Configure su enrutador doméstico
  4. Resolvemos problemas

En realidad decisión


1. Instalar y configurar Pi-Hole


Pi-Hole es una conocida plataforma doméstica diseñada principalmente para combatir la publicidad mediante el bloqueo de solicitudes de dominio de una lista actualizada centralmente. No es que fuera un componente necesario de la solución, pero si comenzó a recopilar DNS de inicio, se hace difícil detenerlo. Pero en serio: Pi-Hole puede no ser perfecto, pero elimina una gran cantidad de dolor de cabeza de una persona que necesita "trabajar".


Para instalar Pi-Hole en un servidor Linux que ya se está ejecutando, solo necesitamos ejecutar un comando:


curl -sSL https://install.pi-hole.net | bash 

Y luego el script en ejecución lo guiará a través de los pasos de instalación.


En el momento en que le pregunte sobre la elección del proveedor de DNS ascendente, puede elegir cualquiera, porque en el siguiente paso aún lo cambiaremos. Todos los demás parámetros se pueden dejar de forma segura de forma predeterminada.


Al final de la instalación, el script le mostrará una contraseña generada aleatoriamente desde la interfaz web, que sería útil que escriba.


Si algo salió mal durante la instalación, puede utilizar los métodos alternativos descritos aquí .


2. Instalar y configurar cloudflared


Para cambiar a DNS a través de HTTPS, utilizamos una solución estándar de Cloudflare. El demonio cloudflared se creó originalmente para levantar el túnel Argo del lado del suscriptor, lo que le permite publicar su servidor web en Cloudflare CDN, incluso si está alojado en una dirección IP privada detrás de NAT. Pero una propiedad muy útil de este demonio es su trabajo como DoH-proxy, y usamos esta propiedad aquí.


Aquí, para la instalación, necesitamos hacer un poco más de esfuerzo, pero tampoco nada particularmente complicado.


Seleccionamos y descargamos el instalador para nuestra plataforma.


 # For amd64 Debian/Ubuntu cd /tmp wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-amd64.deb apt-get install ./cloudflared-stable-linux-amd64.deb cloudflared -v # For amd64 CentOS/RHEL/Fedora cd /tmp wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-amd64.rpm yum install ./cloudflared-stable-linux-amd64.rpm cloudflared -v # For ARM cd /tmp wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-arm.tgz tar -xvzf cloudflared-stable-linux-arm.tgz cp ./cloudflared /usr/local/bin chmod +x /usr/local/bin/cloudflared cloudflared -v 

Después de ejecutar el último comando, deberíamos obtener una salida similar a la siguiente:


 cloudflared version 2019.9.0 (built 2019-09-06-0333 UTC) 

Si tiene uno (por supuesto, la versión y el número de compilación pueden diferir), felicidades, la instalación fue exitosa. Ahora depende de usted configurarlo.


Cree un usuario para el servicio:


 useradd -s /usr/sbin/nologin -r -M cloudflared 

Cree el archivo de configuración del servicio / etc / default / cloudflared:


 # Commandline args for cloudflared CLOUDFLARED_OPTS=--port 5053 --upstream https://1.1.1.1/dns-query --upstream https://1.0.0.1/dns-query 

Y le damos derechos al usuario recién creado y al archivo ejecutable:


 chown cloudflared:cloudflared /etc/default/cloudflared chown cloudflared:cloudflared /usr/local/bin/cloudflared 

A continuación, cree el archivo /lib/systemd/system/cloudflared.service, que nos dará la oportunidad de integrar el servicio en systemd:


 [Unit] Description=cloudflared DNS over HTTPS proxy After=syslog.target network-online.target [Service] Type=simple User=cloudflared EnvironmentFile=/etc/default/cloudflared ExecStart=/usr/local/bin/cloudflared proxy-dns $CLOUDFLARED_OPTS Restart=on-failure RestartSec=10 KillMode=process [Install] WantedBy=multi-user.target 

Activamos el servicio y lo ejecutamos:


 systemctl enable cloudflared systemctl start cloudflared systemctl status cloudflared 

Si todo funcionó, verá que el servicio está en estado activo (en ejecución).


Puede verificar el funcionamiento del servicio, por ejemplo con el comando dig:


 dig @127.0.0.1 -p 5053 google.com 

En la sección de respuestas de la respuesta, verá la dirección IP que recibió su servicio para google.com a través de DoH, algo así como:


 google.com. 217 IN A 172.217.6.142 

Solo queda conectar el servicio al Pi-Hole. Para hacer esto, vaya a la interfaz web de Pi-Hole (la contraseña registrada en la primera etapa es útil para usted), vaya a Configuración - elemento del menú DNS y haga que se vea así:


Captura de pantalla de la configuración del agujero Pi


Lo principal es completar el campo Personalizado con la entrada 127.0.0.1 # 5053 y dejar el daw en él, eliminándolo de todos los demás. Después de eso, no olvide desplazarse hacia abajo de la página y haga clic en Guardar.


Si olvidó escribir la contraseña, está bien, vaya al servidor a través de ssh y ejecute el comando pihole -a -p , le permitirá establecer una nueva contraseña. Bueno, en general, mira las claves del equipo de pihole , hay muchas cosas interesantes. Por ejemplo, una actualización del sistema se realiza con un comando pihole -up .


3. Configure su enrutador doméstico


Por supuesto, no puedo cerrar toda la variedad de enrutadores con este texto. Pero para la mayoría de los enrutadores domésticos, los siguientes puntos son ciertos:


1) Puede establecer un servidor DNS personalizado para el enrutador en la configuración de la interfaz WAN, incluso si la dirección IP se obtiene dinámicamente del proveedor


2) El enrutador emite su dirección a clientes internos como DNS y reenvía sus solicitudes al servidor especificado en la configuración de WAN


En consecuencia, en este caso, es necesario y suficiente para nosotros registrar la dirección de nuestro Pi-Hole como un servidor DNS en la configuración de la interfaz WAN del enrutador doméstico. Es importante que sea el único servidor DNS en la configuración, si se especifica algo más: el enrutador equilibrará las solicitudes entre ellos de acuerdo con el único principio conocido, y esta situación es extremadamente inconveniente para los problemas de depuración en la red.


Si de repente algo salió mal y el servicio dejó de funcionar, es suficiente cambiar la configuración anterior a la dirección del servidor DNS de su proveedor o, por ejemplo, 8.8.8.8, y solo entonces comenzar a comprender.


Si su enrutador es más inteligente y, por ejemplo, tiene la capacidad de especificar en DHCP qué dirección distribuir a los clientes como servidor DNS, puede seguir una ruta alternativa y configurar la distribución de la dirección de Pi-Hole directamente a los clientes. Esto descargará ligeramente el enrutador, pero complicará la reversión anterior al usar el servicio.


Si algo no funciona, pregunte en los comentarios, encontraremos una solución.


4. Solucionamos problemas


En general, después de completar los puntos anteriores, todo debería estar bien para usted, pero hay algunos matices que mis clientes y yo hemos encontrado a veces.


Después de comenzar a usar Pi-Hole, puede experimentar sensaciones inusuales de publicidad reducida en sus dispositivos (especialmente en dispositivos móviles). No se alarme, esto es lo que pretendía. Además, algunos servicios pueden dejar de funcionar de la forma en que está familiarizado y esto requerirá su participación en la configuración. Por ejemplo, el sitio web de Aliexpress intenta periódicamente redirigirlo a la dirección best.aliexpress.com, que se encuentra en la lista de publicidad, y esto bloquea todo acceso a Ali.


Detectar este problema es bastante simple: si está intentando acceder a un servidor bloqueado, su navegador le mostrará un error ERR_NAME_NOT_RESOLVED o similar, y una verificación de línea de comando a través de nslookup <nombre del servidor> devolverá 0.0.0.0.


Resolver el problema para un servidor específico también es fácil: simplemente agréguelo a la lista blanca. Para hacer esto, vaya a http: //pi.hole/admin , inicie sesión, seleccione Lista blanca en el menú de la izquierda y agregue el servidor que necesitamos. Por ejemplo, tuve que abrir, además del best.aliexpress.com mencionado, s.click.aliexpress.com, así como un grupo de sitios en el dominio miui.com para que los servicios de Xiaomi funcionen. Probablemente necesites algo propio. Pero realizar un seguimiento de lo que debe abrirse no es tan difícil: en la página principal del panel de control del servicio y en los registros de consultas, siempre puede ver qué solicitudes de dominio se bloquearon y agregarlas a la lista blanca.


También sucede regularmente que Pi-Hole está instalado en un servidor en el que ya se está ejecutando algún tipo de servicio web. En este caso, no obtendrá acceso a la interfaz de administración basada en la web. La forma de resolver dicho conflicto depende de la situación específica, pero las soluciones principales son:


  1. Si el servidor web no se usó, sino que se mantuvo de forma predeterminada, busque y desactive
  2. Si se usa el servidor web y usted sabe cómo trabajar con él, agregue la interfaz web de Pi-Hole como un recurso separado para su servidor web.
  3. También puede aterrizar la interfaz web de Pi-Hole en un puerto diferente corrigiendo el parámetro server.port en el archivo /etc/lighttpd/lighttpd.conf. Pero esto requerirá recordar en qué puerto se está ejecutando el servidor, por lo que no agradezco tales esquemas.

Conclusión


Como prometió, no escribió nada nuevo. Para muchos lectores, este esquema es comprensible y obvio, y ya está implementado o no se implementa como innecesario. Muchos otros construyeron algo similar de una manera diferente, utilizando el mismo u otros componentes. Le sugiero que considere esta publicación más como un espacio en blanco para su propia solución, si alguna vez la necesita. Pero, habiéndolo ejecutado como una instrucción paso a paso, ya recibirá un servicio que cubre sus necesidades básicas para filtrar anuncios y usar DoH.


Tradicionalmente, responderé preguntas y ayudaré con la configuración.


Nota de PS de GennPen : cuando usa DoH, se vuelve dependiente de su conexión a Internet y si se queda sin dinero en su cuenta, ni siquiera podrá iniciar sesión en la cuenta personal de su proveedor para pagarlos. Por lo tanto, para tales sitios en esta solución, es deseable registrar entradas estáticas en Pi-Hole; esto se puede hacer en la consola con el comando pihole -a -r o simplemente manualmente en el archivo / etc / hosts. Desafortunadamente, la herramienta no está incluida en la interfaz web para esto.

Source: https://habr.com/ru/post/468621/


All Articles