Comment supprimer des publicités avec Pixelserv sur DD-WRT
Il existe de nombreuses façons de bloquer les publicités dans votre navigateur, mais si vous pouviez les bloquer sur le routeur? Voici comment utiliser le micrologiciel DD-WRT et délibérément «empoisonner le DNS» pour bloquer les publicités de tous les appareils de votre réseau..
Vue d'ensemble
Mettre à jour: Guide mis à jour pour refléter les commentaires fournis par les commentateurs et mis à jour le pack anti-annonces avec le nouvel exécutable pixel-server et un journal des modifications.
La première question qui préoccupe tout le monde à l’heure actuelle est la suivante: «Pourquoi ne pas utiliser simplement ad-block?
Pour beaucoup de gens, rien n’explique rien, en particulier avec la nouvelle capacité de chrome de reproduire les extensions que vous utilisez sur tous les ordinateurs sur lesquels vous utilisez Chrome..
La réponse se situe quelque part entre les frais généraux réduits de ne pas avoir à enseigner à tous les utilisateurs de votre réseau les blocs publicitaires (je vous parle, maman, sis, mamie et secrétaire de bureau) et la commodité de ne pas en être dérangé chaque ordinateur que vous configurez. En supposant qu'il y ait sur votre réseau des ordinateurs sur lesquels vous ne configurerez pas votre environnement personnel (par exemple, des «serveurs principaux» ou des machines virtuelles).
Remarque: Même si j’utilise la méthode ci-dessous sur mon routeur domestique, j’ai trouvé que ad-block était un excellent ajout, et je recommande d’utiliser les deux méthodes conjointement. aussi si vous n'avez pas de routeur DD-WRT utilisant ad-block, cela ne leur suffit plus. En fait, j'aime tellement le programme, j'ai fait un don à son développeur et j'encourage tout le monde à le faire pour que son développement se poursuive.
Comment ça marche?
Cela fonctionne essentiellement en empoisonnant délibérément notre DNS afin de renvoyer une adresse IP spécifique pour les domaines de la liste non approuvée. Cette liste non approuvée contiendra les noms de domaine des sites exclusivement responsables de la diffusion du contenu des annonces. Nous ne les manquerons donc pas beaucoup..
Nous allons configurer un serveur HTTP secondaire sur le routeur afin de servir une image transparente d’un pixel, comme réponse à toute demande d’URL. En conjonction avec la résolution «incorrecte» du DNS, les clients du réseau demanderont le contenu à notre serveur de pixels interne et obtiendront une image vide en réponse..
Pour générer la liste non approuvée, nous allons créer une liste personnelle en association avec deux listes téléchargées dynamiquement. Les listes dynamiques sont le fichier hôte MVPS et la liste de domaines Yoyo. Ensemble, elles contiennent une liste très étendue de sites de publicité. En exploitant ces listes, il nous reste la responsabilité d’ajouter simplement le delta des sites qui ne figurent pas déjà dans l’un d’eux, dans notre liste personnelle..
Nous allons également configurer une «liste blanche» pour les domaines que nous ne voulons pas bloquer pour une raison quelconque..
Prérequis et hypothèses
- Patience jeune, c'est une longue lecture.
- Cette procédure a été créée et testée sur DD-WRT (v24pre-sp2 10/12/10 mini r15437), en tant que tel, vous devez déjà avoir installé cette version ou une version ultérieure sur votre routeur pour pouvoir l’utiliser. Plus d'informations sur le site DD-WRT.
- Par souci de facilité d'explication, il est supposé que le routeur a été restauré à ses «paramètres d'usine» ou que les paramètres utilisés n'ont pas changé depuis leurs préréglages «prêts à l'emploi» depuis lors..
- L'ordinateur client utilise le routeur en tant que serveur DNS (par défaut).
- Espace pour JFFS (en cas de doute, je recommande d'utiliser le mini version de DD-WRT).
- Il est supposé que votre réseau est * déjà défini et qu’il s’agit d’une classe C (celle qui a un sous-réseau de 255.255.255.0) comme dernière adresse IP de ce réseau de classe C (x.y.z.254) Sera attribué au programme de serveur de pixels.
- La volonté d'installer winSCP.
* Le script ne pourra pas ajuster les listes de blocage après la première exécution jusqu'au prochain cycle d'actualisation (3 jours).
Crédits
Mettre à jour: Un merci spécial à "mstombs" pour la bonne copie de code C sans son travail, tout cela ne serait pas possible, "Oki" pour la compilation de la version compatible Atheros et une citation ;-) et "Nate" pour son aide lors du QA-ing.
Bien que beaucoup de travail ait été fait pour perfectionner cette procédure de mon côté, elle a été inspirée par les gars du forum DD-WRT et certains des fondements de ce guide se trouvent dans «Ad-blocking with DD- WRT revisited (simple) ”,“ pixelserv sans Perl, sans jffs / cifs / usb free ”et“ Flexion.Org Wiki sur DNSmasq “ainsi que d'autres.
Permet de craquer
Activer SSH pour l'accès SCP
En activant SSH, nous nous donnons la possibilité de nous connecter au routeur en utilisant le protocole SCP. avec cette option activée, nous pouvons ensuite utiliser le programme winSCP pour naviguer visuellement dans la structure de dossiers du routeur (comme nous le verrons plus tard)..
Pour ce faire, à l'aide de l'interface Web, allez dans l'onglet «Services». Recherchez la section «Secure Shell» et cliquez sur le bouton radio «Activer» pour le paramètre SSHd..
Une fois que cela est fait, le WebGUI devrait ressembler à ce qui suit et vous pouvez cliquer sur «Enregistrer» (ne pas appliquer encore).
Activer JFFS
Afin de faire cette configuration d'une manière qui serait stable, reproductible et * être un «bon citoyen d’Internet», nous utiliserons JFFS pour stocker autant de configurations que possible. Il existe d'autres moyens de le faire sans activer JFFS, si vous ne pouvez pas utiliser suffisamment d'espace, mais ils ne sont pas traités ici..
* d’autres méthodes demandent à votre routeur de télécharger les listes des fichiers exécutables et dynamiques du serveur pixel à chaque exécution du script. dans la mesure où cela met les serveurs contenant les listes et le fichier exécutable à rude épreuve et que cela coûte de l’argent à quelqu'un, cette méthode essaie de l’éviter si possible..
Si vous ne savez pas déjà ce qu'est JFFS, cette explication, tirée de l'entrée wiki de DD-WRT sur JFFS, devrait clarifier les choses:
Le système de fichiers Flash en journalisation (JFFS) vous permet d’avoir un système de fichiers Linux en écriture sur un routeur compatible DD-WRT. Il est utilisé pour stocker des programmes utilisateur tels que Ipkg et des données dans une mémoire flash par ailleurs inaccessible. Cela vous permet d’enregistrer des fichiers de configuration personnalisés, d’héberger des pages Web personnalisées stockées sur le routeur et de nombreuses autres choses qui ne sont pas capables sans JFFS..
Pour activer JFFS sur votre routeur, allez dans l'onglet «Administration» et trouvez la section JFFS. l'image ci-dessous montre où vous trouveriez cette section dans l'onglet «Administration».
Dans la section Support JFFS2, cliquez sur les boutons radio "Activer" pour les paramètres "JFFS2" et (le cas échéant) sur les paramètres "Nettoyer JFFS2". Une fois sélectionné, cliquez sur "Enregistrer".
Une fois les paramètres enregistrés, toujours dans l'onglet «Administration», redémarrez le routeur à l'aide du bouton «Redémarrer le routeur». Cela va appliquer les paramètres et effectuer le "format" nécessaire de la "partition" JFFS.
Lorsque l'interface Web revient du redémarrage dans l'onglet «Administration», attendez une demi-minute supplémentaire et actualisez la page..
En cas de succès, vous devriez voir que votre montage JFFS a de l’espace libre comme dans l’image.
Configuration du serveur de pixels
Téléchargez et extrayez le pack anti ads pour l’archive zip dd-wrt qui contient l’exécutable pixel-server (nous ne prenons pas de crédit, nous évitons seulement les «liaisons directes»), le script de blocage des publicités (écrit par le vôtre) et le fichier personnel. domain-list créé par “Mithridates Vii Eupator” et moi.
Il est temps de placer les fichiers dans le montage JFFS du routeur. pour cela, installez winSCP (il s’agit d’un type de configuration “suivant -> suivant -> fin”) et ouvrez-le..
Dans la fenêtre principale, remplissez les informations comme ceci:
Nom d'hôte: IP de votre routeur (la valeur par défaut est 192.168.1.1)
Numéro de port: laisser inchangé à 22
Nom d'utilisateur: racine (même si vous avez changé le nom d'utilisateur pour l'interface Web, l'utilisateur SSH sera toujours * root *)
Fichier de clé privée: laissez ce champ vide (ceci n'est nécessaire que lorsque vous créez une authentification basée sur une paire de clés, ce que nous n'avons pas encore fait)
Protocole de fichier: SCP
Nous devons également désactiver le «groupe d'utilisateurs Lookup» comme indiqué ci-dessous (merci à mstombs de l'avoir signalé) car winSCP attend de l'autre côté un système complet de Linux que les développeurs de DD-WRT, malgré leur excellent travail, n'ont pas été en mesure de fournir. (principalement parce qu'il n'y a tout simplement pas assez d'espace). Si vous laissez cette case cochée, vous rencontrerez des messages effrayants lorsque vous vous connecterez et sauvegarderez les fichiers modifiés..
Sélectionnez Avancé, puis décochez la case «Rechercher les groupes d'utilisateurs»..
Bien que ce soit facultatif, vous pouvez choisir de sauvegarder les paramètres maintenant pour une utilisation ultérieure. Si vous choisissez de sauvegarder les paramètres recommandés, il est également recommandé (malgré les cris de l'asile de «sécurité paranoïaque» que nous profanions l'existence même de SSH) que vous sauvegardiez le mot de passe..
Ensuite, votre fenêtre principale se présentera comme sur l’image, et il vous suffira de double-cliquer sur l’entrée pour vous connecter au routeur..
Comme c'est la première fois que vous vous connectez au routeur, winSCP vous demandera si vous souhaitez faire confiance aux empreintes digitales de l'autre côté. Cliquez sur “Oui” pour continuer.
Les développeurs de DD-WRT ont implémenté un message de bienvenue de bannière contenant des informations sur le micrologiciel que vous avez installé. une fois rouge, cochez la case «Ne plus afficher cette bannière» et «Continuer»..
Une fois connecté, naviguez jusqu'au dossier de niveau supérieur (racine AKA «/»), puis descendez à «/ jffs» car il s'agit du seul emplacement en écriture permanente sur le système de fichiers du routeur («/ tmp» ne survit pas au redémarrage. et le reste est en lecture seule).
Créez un nouveau dossier en appuyant sur la touche F7 ou en cliquant avec le bouton droit de la souris sur un espace vide, passez la souris sur «Nouveau» et cliquez sur «Répertoire»..
Nommez le nouveau répertoire "dns". nous créons ce répertoire afin de garder les éléments dans le répertoire jffs organisé pour une utilisation future et parce que nous modifions principalement le fonctionnement du service DNS.
Copiez les fichiers «pixelserv» et «disable-adds.sh» de l'archive zip anti-ads-pack-for-dd-wrt, en les sélectionnant (utilisez la touche «insérer»), en appuyant sur «F5», puis sur «Copier». ”.
Remarque: Si votre routeur est basé sur Atheros (vous pouvez le vérifier sur le wiki DD-WRT), vous devrez utiliser le pixelerv_AR71xx fourni par Oki et inclus dans le pack et le renommer en «pixelerv» avant de continuer..
Une fois que les fichiers sont sur le routeur, nous devons les rendre exécutables en les sélectionnant (utilisez à nouveau «insérer»), faites un clic droit puis «propriétés»..
Dans la fenêtre des propriétés, cliquez sur le «X» pour la rangée «Propriétaire». cela donnera les autorisations d'exécution des fichiers.
Paramètres du routeur
Maintenant que l'étape est définie, nous pouvons dire au routeur d'exécuter le script de blocage des publicités au démarrage..
Pour ce faire, dans l'interface Web, allez dans l'onglet «Administration», puis dans l'onglet «Commandes»..
Dans la zone de texte «Commandes», écrivez l’emplacement du script sous la forme «/jffs/dns/disable_adds.sh», comme dans l’image, puis cliquez sur «Enregistrer le démarrage»..
En cas de succès, vous devriez voir que le script est devenu partie intégrante du démarrage du routeur, comme indiqué dans l'image ci-dessus..
Configuration de la liste des domaines bloqués personnels (facultatif)
Cette liste vous permet d’ajouter des domaines aux listes non approuvées, si vous constatez que les deux listes dynamiques n’attrapent rien..
Pour ce faire, vous avez le choix entre deux options, qui fonctionnent ensemble, de sorte que vous puissiez les utiliser selon ce qui vous convient le mieux..
Remarque: le la syntaxe est importante, Comme nous sommes en train de créer des directives de configuration que le démon DNSMasq (le processus responsable des traductions nom DNS en IP) utilisera directement. En tant que tel, une syntaxe incorrecte provoquera le blocage du service et empêchera le routeur de résoudre les adresses IP des noms de domaine (vous avez été averti)..
Afin de trouver les noms de domaine incriminés à bloquer, vous souhaiterez peut-être utiliser notre guide «Rechercher les messages secrets dans les en-têtes de sites Web». Les étapes pour trouver les noms des domaines de publication sont pratiquement les mêmes, sauf que dans ce cas, vous recherchez une adresse au lieu d'un message..
La première et il est vrai que le moyen le plus accessible consiste à placer la liste dans la zone de configuration «DNSMasq» de l’interface Web. C’est parce que pour ajouter à cette liste, on peut simplement accéder à la WebGUI au lieu d’avoir à passer «sous le capot» pour apporter des modifications..
Allez dans l'onglet «Services», recherchez la section «DNSMasq» et trouvez la zone de texte «Options DNSMasq supplémentaires»..
Dans cette zone de texte, entrez les listes de domaines que vous souhaitez bloquer avec la syntaxe «adresse = / nom de domaine à bloquer / pixel-server-ip», comme indiqué dans l'image ci-dessous:
Où, dans cet exemple, «192.168.1.254» est l'adresse IP générée pour le serveur de pixels sur la base de «l'adresse réseau» de votre réseau local. Si votre adresse réseau est autre chose que 192.168.1.x, vous devrez ajuster l'adresse du serveur de pixels en conséquence..
Lorsque vous avez terminé, cliquez sur «Enregistrer» au bas de la page (ne pas postuler pour le moment).
La deuxième L’option consiste à composer la liste des domaines que vous souhaitez bloquer, dans le fichier «personal-ads-list.conf» que moi-même et «Mithridates Vii Eupator» avons assemblé. Ce fichier fait partie de l'archive zip que vous avez téléchargée précédemment. C'est un bon début pour les deux méthodes..
Pour l'utiliser, si nécessaire, utilisez votre éditeur de texte favori pour régler l'adresse IP du serveur de pixels (les mêmes contraintes que ci-dessus s'appliquent ici). Ensuite, copiez-le simplement dans le répertoire «/ jffs / dns» comme vous avez les autres fichiers. Une fois que c'est là, vous pouvez utiliser winSCP pour le modifier et ajouter des domaines..
Mise en place de la liste blanche
Ceci est la liste des domaines qui seront omis des listes dynamiques «hôtes» et «domaines»..
Cela est nécessaire car le simple blocage de certains domaines entraîne un dysfonctionnement des sites les utilisant. l'exemple le plus remarquable est "google-analytics.com".
Si nous bloquons son domaine, cela ne changera pas le fait que les sites qui l'utilisent demandent à votre navigateur de télécharger un code JavaScript qui s'exécute sur des événements tels que le fait de quitter une page. Cela signifie que pour un tel site, votre navigateur essaiera de «téléphoner à la maison» en contactant le domaine Google, ne comprendra pas la réponse et vous devrez attendre que le script expire pour passer à la page suivante. Ce n'est pas une expérience de navigation agréable et c'est pourquoi tout domaine contenant «google-analytics» et «googleadservices» est * rigoureusement exempté de filtrage..
Cette liste est créée pour vous avec les domaines mentionnés ci-dessus, lors de la première exécution du script, dans le répertoire «/ jffs / dns»..
Pour utiliser la liste blanche, ouvrez le fichier avec winSCP et **perpendiculaire à la liste les domaines que vous souhaitez exclure, tout en veillant à ne pas laisser de lignes vides (laisser une ligne vide supprimera tous les domaines de toutes les listes).
* Bien que le script crée la liste blanche avec les domaines qu'il contient lors de la première exécution, il n'insiste pas sur leurs cadeaux pour les exécutions futures. Donc, si vous pensez que Google doit être bloqué malgré les problèmes susmentionnés, vous pouvez supprimer les domaines de la liste blanche..
** Vous devez entrer les nouveaux domaines souhaités au début de la liste. Ceci est dû à un bug avec la façon dont bash interprète les nouvelles lignes… désolé je n'ai pas encore de solution pour ça.
Exécution
Ça y est, il est enfin temps d'appeler le script et de voir les résultats en redémarrant simplement le routeur.
Pour ce faire à partir de l'interface Web, sous l'onglet «Administration», retournez à «Gestion», au bas de la page, cliquez sur «Redémarrer le routeur» et attendez que le routeur revienne..
Cela peut prendre quelques minutes au script pour exécuter ses tâches pour la première fois..
Sur les routeurs de type WRT54Gx, vous saurez que l'exécution du script est terminée, car le voyant orange Cisco sur le devant du routeur clignote (les autres routeurs doivent porter le même signe "Indicateur de fin")..
Mise à jour: Cette partie a été * supprimée après avoir découvert qu'elle était une fonctionnalité non liée au matériel.
Comme nous essayons de constater l’absence d’éléments sur le Web, je vous recommande simplement de surfer sur quelques sites pour en voir les effets..
Toutefois, si vous souhaitez vous assurer que la procédure a abouti, la première étape de débogage de la section de dépannage est un excellent point de départ..
* Il est en fait commenté afin que vous puissiez le restaurer si vous êtes sûr que cela ne posera pas de problèmes de configuration..
Prendre plaisir!
Dépannage
Si vous rencontrez des problèmes, vous pouvez effectuer plusieurs opérations pour vérifier ce qui ne va pas..
- Vérifier que le domaine de publication est résolu en IP de pixelerv.
Vous pouvez le faire en émettant la commande nslookup sur le domaine «incriminé». Par exemple, “ad-emea.dubleclick.com” fait partie des hôtes bloqués de la liste personnelle. En publiant «nslookup ad-emea.dubleclick.com» dans une invite de commande, le résultat devrait ressembler à ceci:
Où une réponse normale non bloquée ressemblerait à ceci: - Recommencer.
Pour vous assurer que rien dans la configuration de votre routeur n'entre en conflit avec la configuration de l'ad-block, restaurez le routeur sur «Paramètres d'usine» et réessayez. Une fois que vous avez réussi, ajoutez vos modifications personnalisées dans l'espoir qu'elles ne s'affrontent plus.. - Assurez-vous que votre client utilise le routeur en tant que DNS.
En particulier lorsque vous utilisez un réseau privé virtuel (VPN) ou un réseau plus complexe que la configuration normale routeur à ordinateur, il est possible que votre ordinateur client n’utilise tout simplement pas le routeur en tant que DNS. Il est très facile de voir dans la commande ci-dessus quel est le serveur DNS utilisé par le client. Si l'adresse IP n'est pas identique à celle du routeur, vous avez trouvé le problème.. - Effacer le cache DNS de vos machines personnelles.
En effet, sinon, vous risquez toujours de voir les annonces sur le site que vous testez, tout simplement parce que votre ordinateur sait déjà comment obtenir le contenu de l'annonce sans consulter le DNS. Sous Windows, ce serait «ipconfig / flushdns». - Fermer le navigateur.
Parfois, le navigateur contient les informations en cache, donc vider le cache DNS comme indiqué ci-dessus n'aide pas.. - En cas de doute, redémarrez.
Parfois, les caches peuvent persister et le meilleur moyen de s'en débarrasser est de redémarrer. Commencez par le routeur et si le problème persiste, l'ordinateur client. - Utiliser syslog.
Vous pouvez activer le démon syslog du routeur, puis consulter les messages pour voir si le script rencontre des problèmes, en examinant ses messages. De plus, le script ajoute des alias de commande pour faciliter le débogage..
Pour ce faire, allez dans l'onglet «Services» et activez le démon syslog comme dans l'image ci-dessous:
Remarque: le «serveur distant» est utilisé lorsque vous avez un serveur syslog en écoute sur une autre machine (comme avec kiwi) si vous n'en avez pas, laissez simplement le champ vide.
Une fois activé, vous pouvez voir les messages de débogage en regardant le / var / logs / messages déposer dans un terminal.
* Pour voir TOUS les messages du démarrage, vous pouvez utiliser “more / var / log / messages”.
* Pour ne voir que les messages du script dans le journal, utilisez l'alias «Clog».
* Pour voir les messages dès qu’ils arrivent, utilisez «tail -f / var / log / messages» ou son alias «tlog».. - Comprendre le script.
Même si j'ai créé cette vidéo YouTube pour une version plus ancienne de ce guide et du script, elle contient encore de nombreuses vérités et explications applicables au fonctionnement de la nouvelle version améliorée..