Hoe advertenties met Pixelserv op DD-WRT verwijderen
Er zijn verschillende manieren om advertenties in uw browser te blokkeren, maar wat als u ze op de router zou kunnen blokkeren? Hier leest u hoe u de DD-WRT-firmware gebruikt en opzettelijke "DNS-vergiftiging" om advertenties voor elk apparaat in uw netwerk te blokkeren.
Overzicht
Bijwerken: Handleiding geactualiseerd om de feedback van de commentatoren weer te geven en het anti-advertenties pakket bijgewerkt met het nieuwere uitvoerbare pixel-server en een changelog.
De eerste vraag die nu bij iedereen opkomt, is "waarom niet gewoon ad-block gebruiken?"
Voor veel mensen is er simpelweg geen reden, vooral met de nieuwe mogelijkheid van Chrome om de extensies die u gebruikt te repliceren naar elke computer waarop u Chrome draait.
Het antwoord ligt ergens tussen de verminderde overhead van het niet moeten aanleren van alle gebruikers in je netwerk over ad-block (ik praat met je moeder, zus, oma en secretaresse van het kantoor) en het gemak om er niet mee lastig te vallen elke computer die u instelt. Dat gaat ervan uit dat er enkele computers in uw netwerk zullen zijn waar u uw persoonlijke omgeving niet op gaat configureren (bijvoorbeeld "core servers" of VM's).
Notitie: Hoewel ik de onderstaande methode op mijn thuisrouter gebruik, vond ik ad-block een uitstekende aanvulling en ik raad aan om beide methoden tegelijk te gebruiken. ook als je geen DD-WRT router hebt met ad-block is meer voldoende. Sterker nog, ik vind het programma zo leuk, ik heb het aan de ontwikkelaar geschonken en ik moedig iedereen aan om dit te doen, om zijn ontwikkeling gaande te houden.
Hoe werkt het?
In essentie werkt dit door opzettelijk onze DNS te vergiftigen om een specifiek IP-adres voor domeinen in de niet-goedgekeurde lijst te retourneren. Deze niet-goedgekeurde lijst bevat domeinnamen van sites die exclusief verantwoordelijk zijn voor het leveren van advertentie-inhoud, dus we zullen ze niet veel missen.
We zullen een secundaire HTTP-server op de router instellen om een transparante afbeelding van één pixel te leveren, als het antwoord voor elke URL-aanvraag. In combinatie met het "verkeerde" DNS-probleem, zal dit ertoe leiden dat de netwerkclients de inhoud van onze interne pixelserver vragen en een blanco afbeelding krijgen als antwoord.
Om de niet-goedgekeurde lijst te genereren, zullen we één persoonlijke lijst samenstellen in combinatie met twee dynamisch gedownloade lijsten. de dynamische lijsten zijn het MVPS-hostbestand en de Yoyo-domeinlijst, samen bevatten ze een zeer uitgebreide lijst van advertentiesites. Door gebruik te maken van deze lijsten blijven we verantwoordelijk voor het toevoegen van de delta van sites die zich nog niet in een van deze bevinden, in onze persoonlijke lijst.
We zullen ook een 'witte lijst' instellen voor domeinen die we om welke reden dan ook niet willen blokkeren.
Vereisten en aannames
- Patience jong, dit is lang gelezen.
- Deze procedure is gemaakt en getest op DD-WRT (v24pre-sp2 10/12/10 mini r15437), als zodanig moet deze versie al of later op uw router zijn geïnstalleerd om deze te gebruiken. Meer informatie is voorbij op de DD-WRT-site.
- Omwille van het gemak van uitleg, wordt aangenomen dat de router is hersteld naar zijn "fabrieksinstellingen" of dat de gebruikte instellingen niet zijn veranderd sinds de "uit de doos" -instellingen sindsdien.
- De clientcomputer gebruikt de router als de DNS-server (dit is de standaard).
- Ruimte voor JFFS (in geval van twijfel, raad ik aan om de mini versie van DD-WRT).
- Er wordt aangenomen dat uw netwerk * al is ingesteld en dat het een klasse C is (een die een subnet van 255.255.255.0 heeft) als het laatste IP op dat klasse C-netwerk (x.y.z.254) Wordt toegewezen voor het pixel-serverprogramma.
- De bereidheid om winSCP te installeren.
* Het script kan de blokkeerlijsten na de eerste run niet aanpassen tot de volgende verversingscyclus (3 dagen).
credits
Bijwerken: Speciale dank aan "mstombs" voor het geweldige stukje C-code zonder zijn werk. Dit zou niet mogelijk zijn, "Oki" voor het compileren van de Atheros-compatibele versie en citeren ;-) en "Nate" voor hulp bij de QA-ing.
Hoewel er veel werk aan de winkel was om deze procedure aan mijn einde te perfectioneren, werd de inspiratie daarvoor door de jongens op het DD-WRT-forum aangestoken en enkele van de fundamenten van deze gids zijn te vinden bij "ad-blocking with DD- WRT revisited (eenvoudig) "," pixelserv zonder Perl, zonder jffs / cifs / usb free "en" Flexion.Org Wiki on DNSmasq "evenals anderen.
Laten we kraken
Schakel SSH in voor SCP-toegang
Door SSH in te schakelen, geven we ons op hun beurt de mogelijkheid om verbinding te maken met de router met behulp van het SCP-protocol. als dat is ingeschakeld, kunnen we het winSCP-programma gebruiken om visueel door de mappenstructuur van de router te navigeren (zoals we later zullen zien).
Om dit te doen, gebruikt u de webGUI, ga naar het tabblad "Diensten". Zoek het gedeelte 'Veilige shell' en klik op het keuzerondje 'Activeren' voor de SSHd-instelling.
Zodra dat is gebeurd, ziet de webGUI er als volgt uit en klikt u op 'Opslaan' (niet doen nog van toepassing).
Schakel JFFS in
Om deze setup te maken op een manier die dat zou zijn stal, reproduceerbaar en * een "goede internetburger" zijn, zullen we JFFS gebruiken om zoveel mogelijk van de configuraties op te slaan. Er zijn andere manieren om dit te doen zonder JFFS in te schakelen, als je niet kunt vanwege ruimtebeperkingen, maar ze worden hier niet behandeld.
* andere methoden: uw router downloadt de uitvoerbare en dynamische lijsten van de pixelserver telkens wanneer het script wordt uitgevoerd. omdat dit de servers die de lijsten en het uitvoerbare bestand bevatten onder druk zet en dit geld kost voor iemand, probeert deze methode dit zo mogelijk te vermijden.
Als je niet al weet wat JFFS is, zou deze uitleg, afkomstig van DD-WRT's wiki-artikel over JFFS, duidelijk moeten maken:
Met het Journaling Flash File System (JFFS) kunt u een beschrijfbaar Linux-bestandssysteem op een DD-WRT-router hebben. Het wordt gebruikt om gebruikersprogramma's zoals Ipkg en data op te slaan in een ontoegankelijk flash-geheugen. Hiermee kunt u aangepaste configuratiebestanden opslaan, aangepaste webpagina's hosten die zijn opgeslagen op de router en vele andere dingen die niet geschikt zijn zonder JFFS.
Om JFFS op uw router in te schakelen, gaat u naar het tabblad "Beheer" en vindt u de JFFS-sectie. de onderstaande afbeelding laat zien waar u dit gedeelte zou vinden op het tabblad "Beheer".
Klik in het gedeelte JFFS2-ondersteuning op het keuzerondje "Activeren" voor "JFFS2" en (wanneer dit wordt weergegeven) op de instellingen voor "Schone JFFS2". Eenmaal geselecteerd, klik op "Opslaan".
Wanneer de instellingen zijn opgeslagen, nog steeds op het tabblad "Beheer", start u de router opnieuw op met behulp van de knop "Reboot Router". Dit zal de instellingen toepassen en het benodigde "format" van de JFFS "partitie" uitvoeren.
Wanneer de webGUI terugkomt van het opnieuw opstarten naar het tabblad "Beheer", wacht u nog een halve minuut en vernieuwt u de pagina.
Als dit lukt, zou je moeten zien dat je JFFS-mount wat vrije ruimte heeft zoals op de foto.
Pixelserver instellen
Download en pak het anti-advertenties-pakket uit voor dd-wrt zip-archief dat het uitvoerbare bestand van de pixelserver bevat (we nemen geen eer aan, vermijden alleen "hot linking"), het ad-blocking-script (geschreven door ondergetekende) en het persoonlijke domeinlijst gemaakt door "Mithridates Vii Eupator" en I.
Het is tijd om de bestanden in de JFFS-mount op de router te krijgen. om dit te doen, installeer WinSCP (het is een "volgende -> volgende -> afwerking" type van een setup) en open het.
Voer in het hoofdvenster de informatie als volgt in:
Hostnaam: IP van je router (standaard is 192.168.1.1)
Poortnummer: ongewijzigd op 22
Gebruikersnaam: wortel (zelfs als u de gebruikersnaam voor de webGUI hebt gewijzigd, is de SSH-gebruiker altijd * root *)
Bestand met privésleutel: laat dit leeg (dit is alleen nodig wanneer u een op sleutelparen gebaseerde verificatie maakt die we niet hebben)
Bestand protocol: SCP
We moeten ook "Lookup-gebruikersgroep" uitschakelen zoals hieronder getoond (bedankt mstombs voor het wijzen van dit) omdat winSCP een volledige Linux-versie verwacht aan de andere kant die DD-WRT's ontwikkelaars, ondanks al het uitstekende werk, niet in staat waren om te voorzien (voornamelijk omdat er simpelweg niet genoeg ruimte is). Als u dit aangevinkt laat, zult u enge berichten tegenkomen wanneer u verbinding maakt en bewerkte bestanden opslaat.
Selecteer Advance en schakel het vinkje uit bij "Opzoeken gebruikersgroepen".
Hoewel het optioneel is, kunt u ervoor kiezen om de instellingen nu op te slaan voor later gebruik. Als je ervoor kiest om de instellingen op te slaan die wordt aanbevolen, is het ook aan te raden (ondanks het regelrechte geschreeuw van het "beveiligingsparanoïde" asiel dat we het bestaan van SSH ontheiligen) dat je het wachtwoord opslaat.
Dan zal uw hoofdvenster er in de afbeelding uitzien, en u hoeft alleen maar op de vermelding te klikken om verbinding te maken met de router.
Omdat dit de eerste keer is dat u verbinding maakt met de router, zal winSCP u vragen of u bereid bent om de vingerafdruk van de andere kant te vertrouwen. Klik op "Ja" om door te gaan.
De ontwikkelaars van DD-WRT hebben een banner-welkomstbericht geïmplementeerd met informatie over de firmware die je hebt geïnstalleerd. eenmaal rood, klik je op de "Nooit meer deze banner tonen" checkbox en "Doorgaan".
Eenmaal verbonden, navigeer je naar de map op het hoogste niveau (AKA root "/") en ga je terug naar "/ jffs", want dat is de enige permanent beschrijfbare plaats op het bestandssysteem van de router ("/ tmp" overleeft niet opnieuw opstarten en de rest zijn alleen-lezen).
Maak een nieuwe map, door op F7 te drukken of door met de rechtermuisknop op een lege plek te klikken, plaats je de muisaanwijzer op "Nieuw" en klik je op "Directory".
Noem de nieuwe map "dns". we maken deze map om dingen in de map jffs georganiseerd te houden voor toekomstig gebruik en omdat we de manier waarop de DNS-service werkt, meestal veranderen.
Kopieer de "pixelserv" en "disable-adds.sh" bestanden uit het zip-archief anti-ads-pack-for-dd-wrt, door ze te selecteren (gebruik de "insert" -toets), druk op "F5" en dan op "Copy" ”.
Opmerking: als je router op Atheros is gebaseerd (je kunt dit controleren op de DD-WRT-wiki), moet je de pixelserv_AR71xx van Oki gebruiken en in het pakket opnemen en de naam hernoemen naar "pixelerv" voordat je doorgaat.
Zodra de bestanden op de router staan, moeten we ze uitvoerbaar maken door ze te selecteren (gebruik opnieuw "invoegen") rechtsklik vervolgens op "eigenschappen".
Klik in het eigenschappenvenster op de rij "X" voor de rij "Eigenaar". dat geeft de bestanden uitvoeringsrechten.
Routerinstellingen
Nu de fase is ingesteld, kunnen we de router vertellen om het adblockingscript bij het opstarten uit te voeren.
Om dit te doen, gaat u in WebGUI naar het tabblad "Beheer" en vervolgens naar het tabblad "Opdrachten".
Geef in het tekstvak "Opdrachten" de locatie van het script op als "/jffs/dns/disable_adds.sh", zoals in de afbeelding en klik vervolgens op "Opstarten opslaan".
Als dit lukt, ziet u dat het script onderdeel is geworden van het opstarten van de router, zoals in de bovenstaande afbeelding.
De lijst met geblokkeerde domeinen instellen (optioneel)
Met deze lijst kunt u domeinen toevoegen aan de niet-goedgekeurde lijsten, als u merkt dat de twee dynamische lijsten niets vangen.
Om dit te doen, zijn er twee opties, en ze werken samen, zodat u beide kunt gebruiken op een manier die voor u het handigst is.
Notitie: De syntaxis is belangrijk, Omdat we in feite configuratierichtlijnen maken, gebruikt de DNSMasq-daemon (het proces dat verantwoordelijk is voor DNS-naam naar IP-vertalingen) rechtstreeks. Als gevolg hiervan zorgt een onjuiste syntax ervoor dat de service crasht en de router niet in staat is IP-adressen voor domeinnamen op te lossen (u bent vermaand).
Om de beledigende domeinnamen die u wilt blokkeren te vinden, kunt u onze gids 'Vind de geheime berichten in de Headers voor websites' als een inleiding gebruiken. De stappen voor het vinden van de namen van de advertentiedomeinen zijn vrijwel hetzelfde, alleen dat u in dit geval een adres zoekt in plaats van een bericht.
De eerste en weliswaar op een meer toegankelijke manier is om de lijst in het configuratiescherm "DNSMasq" in de wegGUI te plaatsen. Dit komt omdat om aan deze lijst toe te voegen men simpelweg toegang kan krijgen tot de webGUI in plaats van "onder de motorkap" te moeten gaan om wijzigingen aan te brengen.
Ga naar het tabblad "Services", zoek het gedeelte "DNSMasq" en daar vindt u het tekstvak "Extra DNSMasq-opties".
Voer in dit tekstvak de lijst met domeinen in die u wilt blokkeren met de syntaxis "address = / domain-name-to-block / pixel-server-ip" zoals weergegeven in de onderstaande afbeelding:
Waar in dit voorbeeld het "192.168.1.254" het IP is dat wordt gegenereerd voor de pixel-server op basis van het "netwerkadres" van uw LAN. Als uw netwerkadres iets anders is dan 192.168.1.x, moet u het adres voor de pixelserver dienovereenkomstig aanpassen.
Klik als u klaar bent op "Opslaan" onderaan de pagina (nog niet van toepassing).
De seconde optie is om de lijst met domeinen die u wilt blokkeren samen te voegen tot het bestand "personal-ads-list.conf" dat ikzelf en "Mithridates Vii Eupator" hebben samengesteld. Dit bestand maakt deel uit van het zip-archief dat je eerder hebt gedownload en het is een goed begin voor beide methoden.
Om het te gebruiken, gebruikt u indien nodig uw favoriete teksteditor om het IP-adres van de pixelserver aan te passen (dezelfde beperkingen als hierboven zijn hier van toepassing). Kopieer het vervolgens naar de map "/ jffs / dns" zoals u de andere bestanden hebt. Als het daar is, kun je winSCP gebruiken om het te bewerken en domeinen toe te voegen.
De whitelist instellen
Dit is de lijst met domeinen die worden weggelaten uit de dynamische lijst met "hosts" en "domeinen".
Dit is nodig omdat het eenvoudig blokkeren van sommige domeinen ervoor zorgt dat sites die deze domeinen gebruiken niet goed werken. het meest opvallende voorbeeld is "google-analytics.com".
Als we het domein blokkeren, verandert dit niet het feit dat sites die het gebruiken, uw browser een JavaScript downloaden dat wordt uitgevoerd op gebeurtenissen zoals het verlaten van een pagina. Dit betekent dat voor een dergelijke site uw browser zal proberen "naar huis te bellen" door contact op te nemen met het Google-domein, het antwoord niet begrijpt en u zult moeten wachten tot het script uitloopt om door te gaan naar de volgende pagina. Dat is nauwelijks een aangename surfervaring en daarom is elk domein met "google-analytics" en "googleadservices" * hardcodedly vrijgesteld van filteren.
Deze lijst wordt voor u gemaakt met de bovengenoemde domeinen, wanneer het script voor de eerste keer wordt uitgevoerd, onder de map "/ jffs / dns".
Als u de witte lijst wilt gebruiken, opent u het bestand met winSCP en **perpend naar de lijst met de domeinen die u wilt uitsluiten, maar zorg ervoor dat u geen lege regels achterlaat (als u een lege regel achterlaat, worden alle domeinen van alle lijsten verwijderd).
* Terwijl het script bij de eerste run de witte lijst met de domeinen erin maakt, wordt NIET op hun cadeaus gedrukt voor toekomstige runs. dus als u vindt dat Google ondanks de bovengenoemde problemen moet worden geblokkeerd, kunt u de domeinen van de witte lijst verwijderen.
** U moet de nieuwe domeinen invoeren die u wilt aan het begin van de lijst. Dit komt door een bug met hoe bash nieuwe regels interpreteert ... sorry dat ik daar nog geen werk van heb gemaakt.
Uitvoering
Dit is het, het is eindelijk tijd om het script in te roepen en de resultaten te zien door eenvoudigweg de router opnieuw op te starten.
Om dit vanuit de webGUI te doen, gaat u onder het tabblad "Beheer" terug naar "Beheer", klik onderaan de pagina op "Herstart router" en wacht tot de router terugkomt.
Het kan een paar minuten duren voordat het script voor het eerst zijn taken uitvoert.
Op WRT54Gx type routers weet u wanneer het script klaar is met uitvoeren, omdat het het oranje LED-lampje van Cisco aan de voorzijde van de router zal knipperen (andere routers moeten een vergelijkbaar "tell tail" -teken hebben).
Update: dit onderdeel is * verwijderd nadat is vastgesteld dat het een niet-hardware agnostische functie is.
Omdat we proberen de afwezigheid van elementen op het web te zien, raad ik aan om gewoon naar een aantal sites te surfen om het effect te zien.
Als u er echter zeker van wilt zijn dat de procedure succesvol was, is de eerste foutopsporingsstap in het gedeelte over het oplossen van problemen een prima startpunt.
* Het is eigenlijk becommentarieerd, zodat je het kunt herstellen als je zeker weet dat het geen problemen oplevert tijdens je installatie.
Genieten!
Probleemoplossen
Als je problemen tegenkomt, zijn er een paar dingen die je kunt doen om te controleren wat er mis ging.
- Test of het advertentiedomein is omgezet naar de pixelerv IP.
U kunt dit doen door de opdracht nslookup op te geven tegen het "aanstootgevende" domein. De "ad-emea.dubleclick.com" bijvoorbeeld maakt deel uit van de geblokkeerde hosts in de persoonlijke lijst. Door "nslookup ad-emea.dubleclick.com" in een opdrachtprompt uit te geven, moet het resultaat er als volgt uitzien:
Waar een normaal niet-geblokkeerd antwoord eruit zou zien: - Doe het over.
Om er zeker van te zijn dat niets met de instellingen van je router botst met de adblock-configuratie, herstel je de router naar "Factory Defaults" en probeer je het opnieuw. Zodra je succesvol bent, voeg je je aangepaste wijzigingen toe in de hoop dat ze niet opnieuw botsen. - Zorg ervoor dat uw client de router gebruikt als DNS.
Vooral wanneer u een VPN of een complexer netwerk gebruikt dan de normale router naar de computer, is het mogelijk dat uw clientcomputer de router gewoon niet als DNS gebruikt. Het is heel gemakkelijk om in de bovenstaande opdracht te zien wat de DNS-server is die de client gebruikt. Als het IP-adres niet hetzelfde is als de router, hebt u het probleem gevonden. - Wis de DNS-cache van uw persoonlijke computer.
Dit is omdat u anders misschien nog steeds de advertenties op de site ziet waarmee u test, simpelweg omdat uw computer al weet hoe u de advertentie-inhoud op zichzelf kunt krijgen zonder de DNS daarvoor te raadplegen. Op vensters zou dit "ipconfig / flushdns" zijn. - Sluit de browser.
Soms houdt de browser de informatie in de cache, dus het wissen van de DNS-cache zoals hierboven getoond, helpt niet. - Bij twijfel opnieuw opstarten.
Soms kunnen de caches blijven bestaan en is de beste manier om ze kwijt te raken, opnieuw opstarten. Begin met de router en als het probleem aanhoudt, de clientcomputer. - Gebruik syslog.
U kunt de syslog-daemon van de router activeren en vervolgens de berichten bekijken om te zien of het script problemen ondervindt, door de berichten te bekijken. Het script voegt ook enkele opdrachtaliassen toe om het debuggen eenvoudiger te maken.
Ga hiervoor naar het tabblad "Services" en schakel de syslog-daemon in zoals in de onderstaande afbeelding:
Opmerking: de "Remote Server" wordt gebruikt wanneer u een syslog-server hebt die luistert op een andere machine (zoals met kiwi) als je er geen hebt, laat het dan gewoon leeg.
Eenmaal ingeschakeld, kunt u de foutopsporingsberichten bekijken door naar de / Var / logs / messages bestand in een terminal.
* Om ALLE berichten vanaf het opstarten te zien, kunt u "more / var / log / messages" gebruiken.
* Om alleen de berichten uit het script in het logboek te zien, gebruikt u de alias "clog".
* Om de berichten te zien zoals ze binnenkomen, gebruik in real time "tail -f / var / log / messages" of door zijn alias "tlog". - Begrijp het script.
Hoewel ik deze YouTube-video heb gemaakt voor een oudere versie van deze handleiding en het script, bevat deze nog steeds een heleboel waarheden en verklaringen die van toepassing zijn op hoe de nieuwe en verbeterde versie werkt.