Nous traduisons le réseau domestique en DoH, ou un autre clic sur le nez de filtrage

Après l'annonce relativement récente par Mozilla du lancement de la prise en charge du DNS sur HTTPS (DoH) en production sur le réseau, les litiges se poursuivent, que ce soit mauvais ou bon. À mon avis, la position du "mal" est basée principalement sur le fait qu'en même temps, la manipulation de vos requêtes DNS, même à des fins utiles, sera difficile, donc pour l'instant je reste dans la position du "bien".
image


En Fédération de Russie, les opérateurs de télécommunications, placés dans des conditions très strictes par notre législation, sont obligés de construire des systèmes sophistiqués à plusieurs niveaux pour bloquer l'accès au contenu interdit par Roskomnadzor en Fédération de Russie, à l'un des niveaux dont l'interception DNS fonctionne plus ou moins avec succès. L'utilisation de DoH vous permettra de contourner ce niveau, ce qui, avec l'utilisation du VPN, peut vous faciliter la vie. Veuillez noter qu'une solution en elle-même ne peut pas vous éviter de bloquer, car il n'y a pratiquement pas de fournisseur en Russie qui ne dépend que du filtrage via DNS. Vous avez besoin d'une autre option pour contourner le blocage, par exemple, un VPN, l'un de ceux décrits dans mes articles précédents.


C'est paradoxal, mais dans le panoptique actuel, l'opérateur de télécommunications ne vous menace pas de contourner ses verrous (en utilisant des outils spéciaux pour cela), donc si vous avez peur de lui faire du mal de cette manière, ces craintes sont vaines.


Mais passer à un navigateur spécial pour contourner l'interception DNS n'est pas notre chemin. Notre façon est de transférer tous les appareils de votre réseau domestique vers DoH, rapidement, efficacement et sans travail inutile.


Clause de non-responsabilité


Puisqu'il n'est pas très légitime de publier des méthodes de contournement de l'accès aux informations interdites sur le territoire de la Fédération de Russie, le but de cet article sera de parler d'une méthode qui vous permet d'automatiser l'accès aux ressources autorisées sur le territoire de la Fédération de Russie, mais à cause des actions de quelqu'un qui ne sont pas directement accessibles via votre fournisseur. Et l'accès à d'autres ressources obtenues à la suite des actions de l'article est un effet secondaire malheureux et le but de l'article n'est en aucun cas.


TL; DR


Nous déployons notre propre serveur DNS basé sur Pi-Hole en utilisant Cloudflare DoH pour les requêtes dans le monde. L'objectif est de crypter toutes les requêtes DNS et de contourner le filtrage des opérateurs via l'interception DNS de cette manière. Un bonus utile est le filtrage des publicités.


Aucun savoir-faire magique ne s'ouvre, une simple instruction étape par étape pour ceux qui ne veulent pas comprendre eux-mêmes toutes les subtilités.


De quoi avez-vous besoin pour cela


  1. Faites confiance à Cloudflare. C'est en fait un point très important, car dans l'implémentation décrite, toutes vos requêtes DNS sont traitées par le service Cloudflare. Si vous ne lui faites pas confiance, vous devrez implémenter une autre solution (et c'est un peu plus compliqué que celui décrit, mais le but de cet article ne l'est pas).
  2. Pour pouvoir prendre en charge un serveur Linux en cours d'exécution sur votre réseau domestique qui gérera les requêtes DNS de vos appareils. L'exigence Pi-Hole est de 512 Mo de RAM (cependant, je n'ai pas vérifié le travail avec un volume plus petit). Si votre routeur ou NAS est capable de machines virtuelles - c'est une excellente option, si un Raspberry Pi ou un autre micro-ordinateur sur l'ARM se trouve quelque part sur l'étagère - pas moins bon, si la ferme virtuelle sur ESXi bourdonne sur les mezzanines dans le couloir - ce que je vous dis, vous et vous savez tout vous-même. Si vous n'avez rien de tout cela, les solutions les plus jeunes, telles que Orange Pi Zero, peuvent être trouvées sur le marché secondaire pour des unités de centaines de roubles ou apportées d'Ali pour plus ou moins le même argent. Mais le choix de la plateforme dépasse largement le cadre de cet article, nous pensons donc que vous avez quelque chose. Cependant, des questions à ce sujet peuvent être posées dans les commentaires.
  3. Vous devez être familier avec Linux et les réseaux. Ou du moins vouloir avoir une telle idée. Puisque je ne suis pas prêt à embrasser l'immensité cette fois, vous devrez étudier vous-même des moments incompréhensibles. Cependant, bien sûr, je répondrai à des questions spécifiques dans les commentaires et il est peu probable que vous soyez le seul à y répondre, alors n'hésitez pas à demander.

Données source


L'adresse IPv4 de notre serveur sur le réseau domestique est 192.168.1.10 et elle est attribuée comme statique.


Les paramètres sous Linux sont effectués à partir de la racine (c'est-à-dire qu'avant de démarrer la configuration, nous exécutons la commande sudo su - ).


En bref - la logique de la solution


  1. Installer et configurer Pi-Hole
  2. Installer et configurer cloudflared
  3. Configurez votre routeur domestique
  4. Nous résolvons des problèmes

En fait la décision


1. Installez et configurez Pi-Hole


Pi-Hole est une plateforme domestique bien connue conçue principalement pour lutter contre la publicité en bloquant les demandes de domaine à partir d'une liste mise à jour de manière centralisée. Non pas que c'était un composant nécessaire de la solution, mais si vous avez commencé à collecter le DNS domestique, il devient difficile de l'arrêter. Mais sérieusement - Pi-Hole n'est peut-être pas parfait, mais il supprime une grande quantité de maux de tête chez une personne qui a besoin de «travailler».


Pour installer Pi-Hole sur un serveur Linux déjà en cours d'exécution, il suffit d'exécuter une commande:


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

Et puis le script en cours vous guidera à travers les étapes d'installation.


Au moment où il vous demande le choix du fournisseur DNS en amont, vous pouvez en choisir un, car à l'étape suivante, nous le changerons toujours. Tous les autres paramètres peuvent être laissés en toute sécurité par défaut.


À la fin de l'installation, le script vous montrera un mot de passe généré aléatoirement à partir de l'interface Web, qu'il vous serait utile de noter.


En cas de problème lors de l'installation, vous pouvez utiliser les méthodes alternatives décrites ici .


2. Installez et configurez cloudflared


Afin de passer au DNS via HTTPS, nous utilisons une solution standard de Cloudflare. Le démon cloudflared a été créé à l'origine pour soulever le tunnel Argo du côté de l'abonné, vous permettant de publier votre serveur Web sur le CDN Cloudflare, même s'il est hébergé sur une adresse IP privée derrière NAT. Mais une propriété très utile de ce démon est son travail en tant que proxy DoH, et nous utilisons cette propriété ici.


Ici, pour l'installation, il faut faire un peu plus d'effort, mais aussi rien de particulièrement compliqué.


Nous sélectionnons et téléchargeons le programme d'installation de notre plateforme.


 # 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 

Après avoir exécuté la dernière commande, nous devrions obtenir une sortie similaire à la suivante:


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

Si vous en avez un (bien sûr, la version et le numéro de build peuvent différer), alors félicitations, l'installation a réussi. A vous maintenant de configurer.


Créez un utilisateur pour le service:


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

Créez le fichier de configuration du service / 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 

Et nous donnons des droits à l'utilisateur nouvellement créé et au fichier exécutable:


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

Ensuite, créez le fichier /lib/systemd/system/cloudflared.service, qui nous donnera l'opportunité d'intégrer le service dans 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 

Nous activons le service et l'exécutons:


 systemctl enable cloudflared systemctl start cloudflared systemctl status cloudflared 

Si tout a fonctionné, vous verrez que le service est en état actif (en cours d'exécution).


Vous pouvez vérifier le fonctionnement du service, par exemple avec la commande dig:


 dig @127.0.0.1 -p 5053 google.com 

Dans la section réponse de la réponse, vous verrez l'adresse IP que votre service a reçue pour google.com via DoH, quelque chose comme:


 google.com. 217 IN A 172.217.6.142 

Il ne reste plus qu'à connecter le service au Pi-Hole. Pour ce faire, accédez à l'interface Web Pi-Hole (le mot de passe enregistré lors de la première étape vous est utile), accédez à l'élément de menu Paramètres - DNS et faites-le ressembler à ceci:


Capture d'écran de la configuration Pi-hole


L'essentiel est de remplir le champ personnalisé avec l'entrée 127.0.0.1 # 5053 et de laisser la daw dessus, en le supprimant de tous les autres. Après cela, n'oubliez pas de faire défiler la page et cliquez sur Enregistrer.


Si vous avez oublié d'écrire le mot de passe - ça va, allez sur le serveur via ssh et exécutez la commande pihole -a -p , cela vous permettra de définir un nouveau mot de passe. Eh bien, en général, regardez les clés de l'équipe piqûre , il y a beaucoup de choses intéressantes. Par exemple, une mise à jour du système est effectuée avec une seule commande pihole -up .


3. Configurez votre routeur domestique


Bien sûr, je ne peux pas fermer toute la variété de routeurs avec ce texte. Mais pour la plupart des routeurs domestiques, les points suivants sont vrais:


1) Vous pouvez définir un serveur DNS personnalisé pour le routeur dans les paramètres de l'interface WAN, même si l'adresse IP est obtenue dynamiquement auprès du fournisseur


2) Le routeur transmet son adresse aux clients internes en tant que DNS et transmet leurs demandes au serveur spécifié dans les paramètres WAN


En conséquence, dans ce cas, il est nécessaire et suffisant pour nous d'enregistrer l'adresse de notre Pi-Hole en tant que serveur DNS dans les paramètres de l'interface WAN du routeur domestique. Il est important qu'il soit le seul serveur DNS dans les paramètres, s'il en est spécifié autrement - le routeur équilibrera les demandes entre eux selon le seul principe qui lui est connu, et cette situation est extrêmement gênante pour les problèmes de débogage sur le réseau.


Si soudainement quelque chose s'est mal passé et que le service a cessé de fonctionner, il suffit de changer le paramètre ci-dessus pour l'adresse du serveur DNS de votre fournisseur ou, par exemple, 8.8.8.8, et alors seulement commencer à comprendre.


Si votre routeur est plus intelligent et, par exemple, a la capacité de spécifier dans DHCP l'adresse à distribuer aux clients en tant que serveur DNS, vous pouvez choisir un autre chemin et configurer directement la distribution de l'adresse Pi-Hole aux clients. Cela déchargera légèrement le routeur, mais cela compliquera la restauration ci-dessus de l'utilisation du service.


Si quelque chose ne fonctionne pas - demandez dans les commentaires, nous trouverons une solution.


4. Nous résolvons des problèmes


En général, après avoir terminé les points ci-dessus, tout devrait bien se passer avec vous, mais il y a des nuances que mes clients et moi avons parfois rencontrées.


Après avoir commencé à utiliser Pi-Hole, vous pouvez ressentir des sentiments inhabituels de réduction de la publicité sur vos appareils (en particulier mobiles). Ne vous inquiétez pas, c'est ce que vous vouliez. De plus, certains services peuvent cesser de fonctionner comme vous le savez et cela nécessitera votre participation aux paramètres. Par exemple, le site Web Aliexpress essaie périodiquement de vous rediriger vers l'adresse best.aliexpress.com, qui figure sur la liste des publicités, ce qui bloque tout accès à Ali.


La détection d'un tel problème est assez simple - si vous essayez d'accéder à un serveur bloqué, votre navigateur vous affiche une erreur ERR_NAME_NOT_RESOLVED ou une erreur similaire, et une vérification de la ligne de commande via nslookup <nom du serveur> renvoie 0.0.0.0 en réponse.


La résolution du problème pour un serveur spécifique est également facile - il suffit de l'ajouter à la liste blanche. Pour ce faire, accédez à http: //pi.hole/admin , connectez-vous, sélectionnez Liste blanche dans le menu de gauche et ajoutez le serveur dont nous avons besoin. Par exemple, j'ai dû ouvrir, en plus de best.aliexpress.com mentionné, s.click.aliexpress.com, ainsi qu'un groupe de sites du domaine miui.com pour que les services Xiaomi fonctionnent. Vous avez probablement besoin de quelque chose à vous. Mais il n'est pas si difficile de savoir exactement ce qui doit être ouvert: sur la page principale du tableau de bord du service et dans les journaux de requête, vous pouvez toujours voir quelles demandes de domaine ont été bloquées et les ajouter à la liste blanche.


Il arrive également régulièrement que Pi-Hole soit installé sur un serveur sur lequel une sorte de service Web est déjà en cours d'exécution. Dans ce cas, vous n'aurez pas accès à l'interface de gestion Web. Comment résoudre un tel conflit dépend de la situation spécifique, mais les principales solutions sont les suivantes:


  1. Si le serveur Web n'a pas été utilisé, mais s'est simplement tenu par défaut - recherchez et désactivez
  2. Si le serveur Web est utilisé et que vous savez comment l'utiliser, ajoutez l'interface Web Pi-Hole en tant que ressource distincte à votre serveur Web.
  3. Vous pouvez également atterrir l'interface Web Pi-Hole sur un autre port en corrigeant le paramètre server.port dans le fichier /etc/lighttpd/lighttpd.conf. Mais cela nécessitera de se souvenir du port sur lequel le serveur s'exécute, donc je n'accueille pas de tels schémas.

Conclusion


Comme promis, il n'a rien écrit de nouveau. Pour de nombreux lecteurs, ce schéma est compréhensible et évident, et est soit déjà implémenté, soit non implémenté comme inutile. Beaucoup d'autres ont construit quelque chose de similaire d'une manière différente, en utilisant le même ou d'autres composants. Je vous suggère de considérer ce post plus comme un blanc pour votre propre solution, si vous en avez besoin. Mais, après l'avoir exécutée comme une instruction étape par étape, vous recevrez déjà un service qui couvre vos besoins de base pour filtrer les publicités et utiliser DoH.


Traditionnellement, je répondrai aux questions et aiderai avec les paramètres.


Remarque PS de GennPen - lorsque vous utilisez DoH, vous devenez dépendant de votre connexion Internet et si vous manquez d'argent sur votre compte, vous ne pourrez même pas vous connecter au compte personnel de votre fournisseur pour les payer. Par conséquent, pour de tels sites dans cette solution, il est souhaitable d'enregistrer des entrées statiques dans Pi-Hole - cela peut être fait dans la console avec la commande pihole -a -r ou simplement manuellement dans le fichier / etc / hosts. Malheureusement, l'outil n'est pas inclus dans l'interface Web pour cela.

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


All Articles