Det er mange måter å blokkere annonser i nettleseren din, men hva om du kan blokkere dem på ruteren? Slik bruker du DD-WRT firmware og bevisst "DNS-forgiftning" for å blokkere annonser for alle enheter i nettverket ditt.
Oversikt
Oppdater : Veiledningen oppdatert for å gjenspeile tilbakemeldingene fra kommentatorene og oppdatert anti-annonser-pakke med den nyere kjørbare piksler-serveren og en endringslogg.
Det første spørsmålet som alle tenker på akkurat nå, er “hvorfor ikke bare bruke annonseblokk ?”
For mange mennesker er det ganske enkelt ingen grunn, spesielt med Chromes nye evne til å replikere utvidelsene du bruker til hver datamaskin du kjører Chrome på.
Svaret ligger et sted mellom den reduserte kostnaden for ikke å måtte lære alle brukerne på nettverket om annonseblokk (Jeg snakker med deg mamma, søster, bestemor og kontorsekretær) og bekvemmeligheten av å ikke bli plaget med det på hver datamaskin du setter opp. Det antas at det kommer til å være noen datamaskiner i nettverket som du ikke skal konfigurere ditt personlige miljø på (for eksempel "kjerneservere" eller VM).
Merk : Selv om jeg bruker metoden nedenfor på hjemme-ruteren, fant jeg det annonseblokk for å være et utmerket tillegg til det, og jeg anbefaler å bruke begge metodene sammen. også hvis du ikke bruker en DD-WRT-ruter annonseblokk er mer dem nok. Jeg liker faktisk programmet så godt, jeg donerte til utvikleren, og jeg oppfordrer alle til å gjøre det for å holde utviklingen i gang.
Hvordan virker det?
I hovedsak fungerer dette ved bevisst å forgifte DNS-en vår for å returnere en spesifikk IP for domener i en ikke-godkjent liste. Denne ikke-godkjente listen inneholder domenenavn på nettsteder som utelukkende er ansvarlige for å levere annonseinnhold, så vi kommer ikke til å savne dem mye.
Vi vil sette opp en sekundær HTTP-server på ruteren for å servere et gjennomsiktig bilde med ett piksel, som svar på enhver URL-forespørsel. I forbindelse med DNS "feil" løsning, vil dette føre til at nettverksklientene ber om innholdet fra vår interne pikselserver og får et blankt bilde som svar.
For å generere den ikke-godkjente listen, oppretter vi en personlig liste sammen med to dynamisk nedlastede lister. de dynamiske listene er MVPS vertsfil og Yoyo domeneliste , sammen har de en veldig omfattende liste over annonsesider. Ved å utnytte disse listene, har vi ansvaret for å bare legge til deltaet til nettsteder som ikke allerede er i en av dem, i vår personlige liste.
Vi vil også sette opp en "hviteliste" for domener vi ikke ønsker å bli blokkert av en eller annen grunn.
Forutsetninger og antakelser
- Tålmodighet ung, dette er en lang lesning.
- Denne prosedyren ble opprettet og testet på DD-WRT (v24pre-sp2 10/12/10 mini R. 15437 ), som sådan bør du allerede ha denne versjonen eller senere installert på ruteren din for å bruke den. Mer informasjon er over på DD-WRT-side .
- For å gjøre det lettere å forklare, antas det at ruteren har blitt gjenopprettet til "fabrikkinnstillinger" eller at innstillingene som er brukt ikke har endret seg fra "forhåndsinnstillinger" siden da.
- Klientdatamaskinen bruker ruteren som DNS-server (dette er standard).
- Plass til JFFS (når du er i tvil, anbefaler jeg å bruke mini versjon av DD-WRT).
- Det antas at nettverket ditt allerede er * satt, og at det er en klasse C (en som har et undernett på 255.255.255.0) som den siste IP-en i det klasse C-nettverket (x.y.z. 254 ) Vil bli tildelt for pikselserverprogrammet.
- Viljen til å installere winSCP .
* Skriptet vil ikke kunne justere blokkeringslistene etter første løp før neste oppdateringssyklus (3 dager).
Studiepoeng
Oppdater : Spesiell takk til “mstombs” for det flotte stykket C-kode uten hans arbeid, alt dette ville ikke være mulig, “Oki” for å kompilere den Atheros-kompatible versjonen og sitatet ;-) og “Nate” for å hjelpe til med QA-ing .
Mens det var mye arbeid for å perfeksjonere denne prosedyren på min side, ble inspirasjonen til den antent av gutta på DD-WRT-forumet, og noen av grunnlagene i denne guiden finner du på “ annonseblokkering med DD-WRT revidert (enkelt) ”, “ pikselserv uten Perl, uten jffs / cifs / usb gratis “Og“ Flexion.Org Wiki på DNSmasq “Så vel som andre.
La oss få sprekker
Aktiver SSH for SCP-tilgang
Ved å aktivere SSH gir vi oss selv muligheten til å koble til ruteren ved hjelp av SCP-protokollen. med det aktivert, kan vi deretter bruke winSCP-programmet til å visuelt navigere i mappestrukturen til ruteren (som vi vil se senere).
For å gjøre dette, ved hjelp av webGUI, gå til "Tjenester" -fanen. Finn "Secure shell" -delen og klikk på "Aktiver" -knappen for SSHd-innstillingen.
Når det er gjort, bør webGUI se ut som nedenfor, og du kan klikke på "Lagre" ( ikke gjør det gjelder enda).
Aktiver JFFS
For å gjøre dette oppsettet på en måte som det ville være stabil , reproduserbare og * være en "god internettborger", vil vi bruke JFFS til å lagre så mye av konfigurasjonene som mulig. Det er andre måter å gjøre dette uten å aktivere JFFS, hvis du ikke kan på grunn av plassbegrensninger, men de er ikke dekket her.
* andre metoder har ruteren din til å laste ned den kjørbare pikselserveren og dynamiske lister hver gang skriptet kjøres. ettersom dette setter en belastning på serverne som holder listene og kjørbare, og dette koster penger for noen, prøver denne metoden å unngå det hvis mulig.
Hvis du ikke allerede vet hva som er JFFS, er denne forklaringen hentet fra DD-WRT wiki-oppføring om JFFS bør rydde opp i ting:
Journaling Flash File System (JFFS) lar deg ha et skrivbart Linux-filsystem på en DD-WRT-aktivert ruter. Den brukes til å lagre brukerprogrammer som Ipkg og data i ellers utilgjengelig flashminne. Dette lar deg lagre egendefinerte konfigurasjonsfiler, hoste egendefinerte websider lagret på ruteren og mange andre ting som ikke er i stand uten JFFS.
For å aktivere JFFS på ruteren din, gå til "Administrasjon" -fanen og finn JFFS-delen. bildet nedenfor viser hvor du vil finne denne delen i "Administrasjon" -fanen.
I delen JFFS2 Support klikker du på "Aktiver" -knappene for "JFFS2" og (når den vises) "Rengjør JFFS2" -innstillingene. Når du er valgt, klikker du på “Lagre”.
Når innstillingene er lagret, fortsatt på "Administrasjon" -fanen, start ruteren på nytt ved å bruke "Reboot Router" -knappen. Dette vil bruke innstillingene og utføre det nødvendige “formatet” for JFFS “partisjonen”.
Når webGUI kommer tilbake fra omstart til "Administrasjon" -fanen, vent i ytterligere et halvt minutt og oppdater siden.
Hvis det lykkes, bør du se at JFFS-festet ditt har litt ledig plass som på bildet.
Oppsett av pikselserver
Last ned og hent ut anti ads-pakke for dd-wrt zip-arkiv som inneholder den kjørbare piksler-serveren (vi tar ikke kreditt, bare unngår "hot linking"), annonseblokkeringsskriptet (skrevet av ditt eget) og listen over personlige domener opprettet av "Mithridates Vii Eupator" og jeg.
Det er på tide å få filene til JFFS-festet på ruteren. for å gjøre dette, installer winSCP (det er en "neste -> neste -> ferdig" -type av et oppsett) og åpne den.
I hovedvinduet fyller du ut informasjonen slik:
Vertsnavn: routerens IP (standard er 192.168.1.1)
Portnummer: la uendret være 22
Brukernavn: rot (selv om du endret brukernavnet for webGUI, SSH-brukeren vil alltid være * root * )
Privat nøkkelfil: la stå tom (dette er bare nødvendig når du oppretter en nøkkelparbasert autentisering som vi ikke har)
Filprotokoll: SCP
Vi må også deaktivere “Lookup user group” som vist nedenfor (takk mstombs for at du påpeker dette) fordi winSCP forventer en fullverdig Linux på den andre siden som DD-WRTs utviklere, til tross for alt det gode arbeidet, ikke kunne tilby (hovedsakelig fordi det ganske enkelt ikke er nok plass). Hvis du lar dette være avmerket, vil du støte på skumle meldinger når du kobler til og lagrer redigerte filer.
Velg Advance, og fjern deretter merket for "Slå opp brukergrupper".
Selv om det er valgfritt, kan du velge å lagre innstillingene nå for senere bruk. Hvis du velger å lagre innstillingene som anbefales, anbefales det også (til tross for direkte rop fra "sikkerhetsparanoide" asyl at vi skjender selve eksistensen av SSH) at du lagrer passordet.
Så vil hovedvinduet ditt se ut som på bildet, og alt du trenger å gjøre for å koble til ruteren er å dobbeltklikke på oppføringen.
Siden dette er første gang du kobler deg til ruteren, vil winSCP spørre om du er villig til å stole på fingeravtrykket til den andre siden. Klikk "Ja" for å fortsette.
DD-WRTs utviklere har implementert en Banner-velkomstmelding med litt info om fastvaren du har installert. Når du er rød, klikker du på avkrysningsruten “Vis aldri dette banneret igjen” og “Fortsett”.
Når du er koblet til, navigerer du deg til toppnivåmappen (AKA root “/”) og deretter går du tilbake til “/ jffs”, da det er det eneste permanent skrivbare stedet på ruters filsystem (“/ tmp” overlever ikke omstart og resten er skrivebeskyttet).
Opprett en ny mappe ved å trykke F7 eller høyreklikke på et tomt sted, sveve over "Ny" og klikke "Katalog".
Gi den nye katalogen navnet “dns”. vi oppretter denne katalogen for å holde ting i jffs-katalogen organisert for fremtidig bruk, og fordi vi for det meste endrer hvordan DNS-tjenesten fungerer.
Kopier "pikselserv" og "deaktiver-adds.sh" -filene fra anti-ads-pack-for-dd-wrt zip-arkivet, ved å velge dem (bruk "sett inn" -tasten), trykke "F5" og deretter "Kopier ”.
Merk: Hvis ruteren din er Atheros-basert (du kan sjekke dette på DD-WRT wiki ) må du bruke pikselserv_AR71xx levert av Oki og inkludert i pakken og gi den nytt navn til “pikselserv” før du fortsetter.
Når filene er på ruteren, må vi gjøre dem kjørbare ved å velge dem (bruk igjen "sett inn") høyreklikk og deretter "egenskaper".
I eiendomsvinduet klikker du på "X" for "Eier" -raden. som vil gi filene kjøringstillatelser.
Ruterinnstillinger
Nå som scenen er satt, kan vi fortelle ruteren å kjøre det ad-blokkerende skriptet ved oppstart.
For å gjøre dette, i webGUI, gå til "Administrasjon" -fanen og deretter "Kommandoer" -fanen.
I tekstboksen “Kommandoer” skriver du plassering av skriptet som “/jffs/dns/disable_adds.sh”, som på bildet, og klikker deretter på “Lagre oppstart”.
Hvis det lykkes, bør du se at skriptet har blitt en del av ruterenes oppstart som på bildet ovenfor.
Sette opp listen over blokkerte personlige domener (valgfritt)
Denne listen lar deg legge til domener i de ikke-godkjente listene, hvis du oppdager at de to dynamiske listene ikke fanger noe.
For å gjøre dette er det to alternativer, og de fungerer sammen, slik at du kan bruke begge i henhold til hva som er mer praktisk for deg.
Merk : De syntaksen er viktig , Siden vi faktisk lager konfigurasjonsdirektiver som DNSMasq-demonen (prosessen som er ansvarlig for DNS-navn til IP-oversettelser) vil bruke direkte. Som sådan vil feil syntaks her føre til at tjenesten krasjer og at ruteren ikke klarer å løse IP-adresser for domenenavn (du har blitt formanet).
For å finne de fornærmende domenenavnene du vil blokkere, kan det være lurt å bruke “ Finn de hemmelige meldingene i nettstedets overskrifter ”Guide som en primer. Fremgangsmåten for å finne navnene på reklamedomenene er praktisk talt de samme, bare at du i dette tilfellet leter etter en adresse i stedet for en melding.
Den første og riktignok mer tilgjengelig måte er å sette listen inn i "DNSMasq" -konfigurasjonsboksen i wegGUI. Dette er fordi for å legge til denne listen kan man bare få tilgang til webGUI i stedet for å måtte gå "under panseret" for å gjøre endringer.
Gå til "Tjenester" -fanen, finn "DNSMasq" -delen og finn deretter tekstfeltet "Ytterligere DNSMasq-alternativer".
I denne tekstboksen skriver du inn lister over domener som du vil blokkeres med syntaksen “adresse = / domenenavn-til-blokk / pixel-server-ip” som vist på bildet nedenfor:
Hvor i dette eksemplet er "192.168.1.254" IP-en som genereres for pikselserveren basert på "nettverksadressen" til LAN-nettverket ditt. Hvis nettverksadressen din er noe annet, så må du 192.168.1.x justere adressen til pikselserveren deretter.
Når du er ferdig, klikker du på "Lagre" nederst på siden (gjelder ikke ennå).
Den andre alternativet er å sammensette listen over domener du vil blokkere, til "personal-ads-list.conf" -filen som jeg selv og og "Mithridates Vii Eupator" har samlet. Denne filen er en del av zip-arkivet du lastet ned tidligere, og det er en flott start for begge metodene.
For å bruke den, om nødvendig, bruk favoritt teksteditoren din til å justere IP-en til pikselserveren (de samme begrensningene som ovenfor gjelder her). Kopier det bare til katalogen “/ jffs / dns” som du har de andre filene. Når den er der, kan du bruke winSCP til å redigere den og legge til domener.
Sette opp hvitlisten
Dette er listen over domener som vil bli utelatt fra de dynamiske "verts" og "domener" lister.
Dette er nødvendig fordi bare å blokkere noen domener fører til at nettsteder som bruker dem, ikke fungerer. det mest bemerkelsesverdige eksemplet er “google-analytics.com”.
Hvis vi blokkerer domenet, vil det ikke endre det faktum at nettsteder som bruker det, har nettleseren din til å laste ned et JavaScript som kjører på hendelser som å forlate en side. Dette betyr at for et slikt nettsted vil nettleseren din prøve å "ringe hjem" ved å kontakte google-domenet, ikke forstår svaret, og du må vente til skriptet løper ut for å fortsette til neste side. Det er neppe en hyggelig surfingopplevelse, og det er grunnen til at ethvert domene som inneholder "google-analytics" og "googleadservices" * er hardkodet unntatt fra filtrering.
Denne listen er opprettet for deg med ovennevnte domener, når skriptet kjøres for første gang, under katalogen “/ jffs / dns”.
For å bruke hvitlisten, åpne filen med winSCP og ** perpend til listen domenene du vil ekskludere, mens du er forsiktig med å legge igjen tomme linjer (hvis du legger igjen en tom linje, slettes alle domenene fra alle listene).
* Mens skriptet oppretter hvitlisten med domenene i det første løpet, insisterer det IKKE på presentene sine for fremtidige løp. så hvis du føler at google skal blokkeres til tross for de nevnte problemene, kan du fjerne domenene fra hvitelisten.
** Du må oppgi de nye domenene du vil ha ved starten av listen. Dette er på grunn av en feil med hvordan bash tolker nye linjer ... beklager at jeg ikke har noe arbeid med det ennå.
Henrettelse
Dette er det, det er endelig på tide å påkalle skriptet og se resultatene ved å starte ruteren på nytt.
For å gjøre dette fra webGUI, under "Administrasjon" -fanen, gå tilbake til "Management", nederst på siden, klikk på "Reboot router" og vent til ruteren kommer opp igjen.
Det kan ta et par minutter for manuset å utføre sine oppgaver for første gang.
På rutere av typen WRT54Gx vil du vite når skriptet er ferdig utført fordi det vil blink den oransje Cisco-lampen foran på ruteren (andre rutere skal ha et lignende “tell tail” -tegn).
Oppdatering: Denne delen ble * fjernet etter at den ble oppdaget som en ikke-maskinvare-agnostisk funksjon.
Mens vi prøver å se fraværet av elementer på nettet, anbefaler jeg å surfe på et par nettsteder for å se påvirkningen.
Men hvis du vil være sikker på at prosedyren var vellykket, er det første feilsøkingstrinnet i feilsøkingsdelen et flott sted å begynne med.
* Det er faktisk kommentert slik at du kan gjenopprette det hvis du er sikker på at det ikke vil forårsake problemer med oppsettet ditt.
Nyt!
Feilsøking
Hvis du får problemer, er det et par ting du kan gjøre for å sjekke hva som gikk galt.
-
Test at annonsedomenet er løst til pikselserv IP.
Du kan gjøre dette ved å utstede kommandoen nslookup mot det "fornærmende" domenet. For eksempel er “ad-emea.dubleclick.com” en del av de blokkerte vertene fra den personlige listen. Ved å utstede "nslookup ad-emea.dubleclick.com" i en ledetekst, bør resultatet se ut som:
Hvor et vanlig, ikke-blokkert svar vil se ut:
-
Do over.
For å sikre at ingenting med ruteren din er i konflikt med annonseblokkkonfigurasjonen, må du gjenopprette ruteren til "Fabrikkinnstillinger" og prøve på nytt. Når du er vellykket, legg til dine tilpassede endringer i håp om at de ikke kolliderer igjen. -
Forsikre deg om at klienten bruker ruteren som DNS.
Spesielt når du bruker et VPN eller et nettverk som er mer komplisert enn den vanlige ruteren til datamaskinoppsett, er det mulig at klientdatamaskinen din rett og slett ikke bruker ruteren som sin DNS. Det er veldig enkelt å se i kommandoen over hva som er DNS-serveren klienten bruker. Hvis IP-en ikke er den samme som ruteren, har du funnet problemet. -
Tøm DNS-cachen for dine personlige maskiner.
Dette er fordi ellers kan du fremdeles se annonsene til nettstedet du tester med, rett og slett fordi datamaskinen din allerede vet hvordan du får reklameinnholdet på egenhånd uten å konsultere DNS for det. På windows vil dette være "ipconfig / flushdns". -
Lukk nettleseren.
Noen ganger holder nettleseren informasjonen hurtigbufret, så det hjelper ikke å tømme DNS-cachen som vist ovenfor. -
Når du er i tvil, må du starte den på nytt.
Noen ganger kan cachene vedvare, og den beste måten å kvitte seg med dem er å starte på nytt. Start med ruteren, og hvis problemet vedvarer, klientdatamaskinen. -
Bruk syslog
.
Du kan aktivere rutens syslog-demon og deretter se på meldingene for å se om skriptet støter på problemer ved å undersøke meldingene. Skriptet legger også til noen kommandoaliaser for å gjøre feilsøking enklere.
For å gjøre dette, gå til "Tjenester" -fanen og aktiver syslog-demonen som på bildet nedenfor:
Merk: "Ekstern server" brukes når du har en syslog-lytter på en annen maskin (som med kiwi ) hvis du ikke har en, bare la den være tom.
Når den er aktivert, kan du se feilsøkingsmeldingene ved å se på /var/logs/messages fil i en terminal .
* For å se ALLE meldinger fra oppstart kan du bruke “mer / var / log / meldinger”.
* For å se bare meldingene fra skriptet i loggen bruker du "clog" -aliaset.
* For å se meldingene når de kommer inn, i sanntid, bruk ”tail -f / var / log / meldinger” eller med aliaset “tlogg”. -
Forstå manuset.
Selv om jeg har laget denne YouTube-videoen for en eldre versjon av denne guiden og skriptet, inneholder den fortsatt mange sannheter og forklaringer som er gjeldende for hvordan den nye og forbedrede versjonen fungerer.