Slik fjerner du annonser med Pixelserv på DD-WRT
Det er mange måter å blokkere annonser på 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 på nettverket ditt.
Oversikt
Oppdater: Guide oppdatert for å gjenspeile tilbakemelding tilbys av kommentatorer og oppdaterte anti-annonser-pakken med den nyere pixel-serveren kjørbar og en changelog.
Det første spørsmålet om alles sinn akkurat nå er "hvorfor ikke bare bruk ad-blokk?"
For mange mennesker er det ganske enkelt ikke en grunn, spesielt med Chrome's nye evne til å replikere utvidelsene du bruker til hver datamaskin du kjører krom på.
Svaret ligger et sted mellom den reduserte overhead av å ikke lære alle brukerne på nettverket ditt om ad-block (jeg snakker med deg mamma, sis, granny og kontorsekretær) og bekvemmeligheten av å ikke bli plaget med det på hver datamaskin du konfigurerer. Det forutsetter at det kommer til å være noen datamaskiner på nettverket ditt at du ikke skal konfigurere ditt personlige miljø på (for eksempel "core servers" eller VMs).
Merk: Selv om jeg bruker metoden nedenfor på min hjemmebryter, fant jeg ad-blokk for å være et utmerket tillegg til det, og jeg anbefaler å bruke begge metodene i forbindelse. også hvis du ikke har en DD-WRT-ruter som bruker ad-blokk, er det mer dem nok. Faktisk liker jeg programmet så mye, jeg donerte til utvikleren sin, og jeg oppfordrer alle til å gjøre det for å holde utviklingen gått.
Hvordan virker det?
I hovedsak fungerer dette ved å forsøke å forbytte DNS-en vår for å returnere en bestemt IP for domener i en ikke-godkjent liste. Denne ikke godkjente listen inneholder domenenavn på nettsteder som er ansvarlige utelukkende for å levere annonseinnhold, så vi vil ikke savne dem mye.
Vi vil sette opp en sekundær HTTP-server på ruteren for å betjene et gjennomsiktig en pikselbilde, som svaret for en hvilken som helst URL-forespørsel. I forbindelse med DNS-feilen "feil", vil dette føre til at nettverksklienterne ber om innholdet fra vår interne pixel-server og får et tomt bilde som svar.
For å generere den ikke godkjente listen, oppretter vi en personlig liste sammen med to dynamisk nedlastede lister. De dynamiske lister er MVPS-vertsfilen og Yoyo-domenelisten, sammen inneholder de en svært omfattende liste over annonsesider. Ved å utnytte disse lister, har vi ansvaret for bare å legge til deltaet av nettsteder som ikke allerede er i en av dem, i vår personlige liste.
Vi vil også sette opp en "hvitliste" for domener vi ikke vil bli blokkert av noen grunn.
Forutsetninger og forutsetninger
- Tålmodighet ung, dette er en lang lesning.
- Denne prosedyren ble opprettet og testet på DD-WRT (v24pre-sp2 10/12/10 mini r15437), 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-siden.
- For å forenkle forklaringer skyldes det at ruteren har blitt gjenopprettet til det er "fabrikkinnstillinger" eller at innstillingene som er brukt, ikke er endret fra forhåndsinnstillingene "ut av boksen" siden da.
- Klientmaskinen bruker ruteren som DNS-serveren (dette er standard).
- Plass til JFFS (når du er i tvil, anbefaler jeg at du bruker mini versjon av DD-WRT).
- Det antas at nettverket ditt er * allerede satt og at det er en klasse C (en som har et delnett på 255.255.255.0) som den siste IP på det klasse C-nettverket (x.y.z.254) Vil bli tildelt for piksel-serverprogrammet.
- Villigheten til å installere winSCP.
* Skriptet vil ikke kunne justere blokklister etter første gang til neste oppdateringsperiode (3 dager).
studiepoeng
Oppdater: Spesiell takk til "mstombs" for det store stykket C-kode uten sitt arbeid alt dette ville ikke være mulig, "Oki" for å kompilere Atheros-kompatible versjonen og sitatet ;-) og "Nate" for å hjelpe med QA-ing.
Mens det var mye arbeid for å perfeksjonere denne prosedyren på slutten, ble inspirasjonen for den antatt av gutta over på DD-WRT forumet og noen av grunnene til denne veiledningen kan bli funnet på "ad-blokkering med DD- WRT revisited (simple) "," pixelserv uten Perl, uten noen jffs / cifs / usb gratis "og" Flexion.Org Wiki on DNSmasq "så vel som andre.
Lar deg sprekke
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 da bruke winSCP-programmet til å navigere visuelt i rutestrukturen til ruteren (som vi vil se senere).
For å gjøre dette, bruk webGUI, gå til kategorien "Tjenester". Finn "Sikkert skall" -delen og klikk på "Aktiver" -knappen for SSHd-innstillingen.
Når det er gjort, må webGUI se nedenfor og du kan klikke på "Lagre" (ikke gjelder enda).
Aktiver JFFS
For å gjøre dette oppsettet på en måte som ville være stabil, reproduserbar og * være en "god Internett-borger", vil vi bruke JFFS til å lagre så mye av konfigurasjonene som mulig. Det finnes andre måter å gjøre dette på uten å aktivere JFFS, hvis du ikke kan på grunn av begrensninger i rommet, men de er ikke dekket her.
* andre metoder har ruteren din laste ned pixel-serveren kjørbare og dynamiske lister hver gang skriptet kjøres. da dette legger en belastning på serverne som holder lister og kjørbare og dette koster penger til noen, forsøker denne metoden å unngå det hvis det er mulig.
Hvis du ikke allerede vet hva som er JFFS, bør denne forklaringen, tatt fra DD-WRTs wikioppføring om JFFS, rydde opp ting:
Journals Flash File System (JFFS) lar deg ha et skrivbart Linux-filsystem på en DD-WRT-aktivert router. Det brukes til å lagre brukerprogrammer som Ipkg og data i ellers utilgjengelig flashminne. Dette lar deg lagre egendefinerte konfigurasjonsfiler, verts tilpassede nettsider lagret på ruteren og mange andre ting som ikke er i stand uten JFFS.
For å aktivere JFFS på ruteren, gå til "Administrasjon" -fanen og finn JFFS-delen. bildet nedenfor viser hvor du finner denne delen i kategorien Administrasjon.
I JFFS2 Support-delen klikker du på "Aktiver" -knappene for "JFFS2" og (når det vises) "Clean JFFS2" -innstillingene. Når du er valgt, klikker du på "Lagre".
Når innstillingene er lagret, fortsatt på "Administrasjon" -fanen, start på ruteren ved å bruke "Reboot Router" -knappen. Dette vil gjelde innstillingene og utføre det nødvendige "formatet" av 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-mountet ditt har ledig plass som på bildet.
Oppsett av piksel server
Last ned og hent ut anti-reklamepakken for dd-wrt zip-arkiv som inneholder kjørbare bildeelementer (vi tar ikke kreditt, bare unngår "hot linking"), ad-blokkeringskriptet (skrevet av deg selv) og den personlige domeneliste opprettet av "Mithridates Vii Eupator" og jeg.
Det er på tide å få filene til JFFS-monteringen på ruteren. For å gjøre dette, installer winSCP (det er en "neste -> neste -> finish" type et oppsett) og åpne det.
I hovedvinduet fyller du inn informasjonen slik:
Vertsnavn: ruteren din IP (standard er 192.168.1.1)
Havnummer: La uendret være klokken 22
Brukernavn: rot (selv om du endret brukernavnet for webGUI, vil SSH-brukeren alltid være * root *)
Privat nøkkelfil: la være tom (dette er bare nødvendig når du oppretter en nøkkelparbasert godkjenning som vi ikke har)
Fil protokoll: SCP
Vi må også deaktivere "Lookup user group" som vist nedenfor (takk mstombs for å peke ut dette) fordi winSCP forventer en fullblåst 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 merket, vil du møte skremmende meldinger når du kobler til og lagrer redigert filer.
Velg Advance, og fjern deretter merket "Oppsøk brukergrupper".
Mens 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 de direkte ropene fra "sikkerhetsparanoid" asyl som vi desecrerer selve eksistensen av SSH) at du lagrer passordet.
Da ser hovedvinduet ut i bildet, og alt du trenger å gjøre for å koble til ruteren, er dobbeltklikk på oppføringen.
Siden dette er første gang du kobler til ruteren, vil winSCP spørre om du er villig til å stole på fingeravtrykk på den andre siden. Klikk på "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, klikk på "Vis aldri denne banneren igjen" i avkrysningsruten og "Fortsett".
Når du er tilkoblet, naviger deg til toppnivåmappen (AKA root "/") og gå tilbake til "/ jffs", da det er det eneste permanent skrivbare stedet på ruterenes filsystem ("/ tmp" overlever ikke omstart og resten er skrivebeskyttet).
Opprett en ny mappe ved å trykke på F7 eller høyreklikk et tomt sted, sving over "Nytt" og klikk "Directory".
Gi den nye katalogen "dns" navnet. 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 "pixelserv" og "disable-adds.sh" -filene fra anti-ads-pack-for-dd-wrt zip-arkivet ved å velge dem (bruk "insert" -tasten), trykke "F5" og deretter "Kopier ”.
Merk: Hvis ruteren din er Atheros basert (du kan sjekke dette på DD-WRT wiki), må du bruke Pixelserv_AR71xx fra Oki og inkludert i pakken og omdøpe den til "Pixelserv" før du fortsetter.
Når filene er på ruteren, må vi gjøre dem kjørbare ved å velge dem (igjen bruk "insert") høyreklikk deretter "egenskaper".
På egenskapsvinduet klikker du på "X" for "Owner" -raden. som vil gi filene kjøringsrettigheter.
Ruterinnstillinger
Nå som scenen er satt, kan vi fortelle ruteren å kjøre ad-blokkeringskriptet ved oppstart.
For å gjøre dette, gå i webGUI til fanen "Administrasjon" og deretter "Kommandoer" -fanen.
I tekstboksen "Kommandoer" skriver du stedet for skriptet som "/jffs/dns/disable_adds.sh", som i bildet, og deretter klikker du på "Lagre oppstart".
Hvis vellykket, bør du se at skriptet har blitt en del av ruterenes oppstart som i bildet ovenfor.
Sette opp listen Personlige blokkerte domener (Valgfritt)
Denne listen lar deg legge til domener på de ikke godkjente lister, hvis du finner ut at de to dynamiske lister ikke fanger noe.
For å gjøre dette, er det to alternativer, og de jobber sammen, slik at du kan bruke begge etter hva som er mer praktisk for deg.
Merk: De syntaks er viktig, Da vi faktisk lager konfigurasjonsdirektiver som DNSMasq daemon (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 lar ruteren ikke klare å løse IP-adresser for domenenavn (du har blitt admonished).
For å finne de krenkende domenenavnene for å blokkere, kan du bruke guiden "Finn de hemmelige meldingene i Webside Headers" som en grunnleggende. Fremgangsmåten for å finne navnene på annonsedomenene er praktisk talt det samme, bare det er i dette tilfellet du leter etter en adresse i stedet for en melding.
Den første og admittedly mer tilgjengelig måte er å sette listen i "DNSMasq" konfigurasjonsboksen i veienGUI. Dette er fordi å legge til denne listen kan man bare få tilgang til webGUI i stedet for å måtte gå "under hetten" for å gjøre endringer.
Gå til kategorien "Tjenester", finn "DNSMasq" -delen, og finn tekstboksen "Ytterligere DNSMasq-alternativer"..
I denne tekstboksen skriver du inn lister over domener som du vil bli blokkert 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 piksel-serveren basert på nettverksadressen til ditt LAN. Hvis nettverksadressen din er noe annet enn 192.168.1.x må du justere adressen til piksel-serveren tilsvarende.
Når du er ferdig, klikker du på "Lagre" nederst på siden (gjelder ikke ennå).
Den andre alternativet er å sammensatte listen over domener du vil blokkere, til filen "personal-ads-list.conf" som meg selv og og "Mithridates Vii Eupator" har samlet. Denne filen er en del av zip-arkivet du lastet ned tidligere, og det er en god start for begge metodene.
For å bruke den, bruk om nødvendig din favoritt tekstredigerer for å justere IP-piksel-serveren (de samme begrensningene som ovenfor gjelder her). Så kopier det bare til "/ jffs / dns" katalogen som du har de andre filene. Når det er der kan du bruke winSCP til å redigere det og legge til domener.
Setter opp hvitelisten
Dette er listen over domener som vil bli utelatt fra de dynamiske "vertene" og "domener" -lister.
Dette er nødvendig fordi bare blokkering av noen domener forårsaker at nettsteder bruker dem til feil. det mest bemerkelsesverdige eksempelet er "google-analytics.com".
Hvis vi blokkerer det domenet, vil det ikke endre det faktum at nettsteder som bruker det, må nettleseren 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, forstår ikke svaret, og du må vente til skriptet går ut for å fortsette til neste side. Det er neppe en hyggelig surfingopplevelse, og derfor er et hvilket som helst domene som inneholder "google-analytics" og "googleadservices" * hardkodd unntatt fra filtrering.
Denne listen er opprettet for deg med de nevnte nevnte domener, når skriptet kjøres for første gang, under katalogen "/ jffs / dns".
For å bruke hvitelisten, åpne filen med winSCP og **perpend til listen de domenene du vil ekskludere, mens du er forsiktig med å ikke la noen tomme linjer (etterlate en tom linje vil slette alle domenene fra alle lister).
* Mens skriptet oppretter whitelisten med domenene i den på første runde, insisterer det IKKE på gaver til fremtidige løp. så hvis du føler at Google burde bli blokkert til tross for de nevnte problemene, kan du fjerne domenene fra hvitelisten.
** Du må legge inn de nye domenene du vil ha i starten av listen. Dette er på grunn av en feil med hvordan bash tolker nye linjer ... beklager, jeg har ikke noe arbeid for det ennå.
Henrettelse
Dette er det, det er endelig tid til å påkalle skriptet og se resultatene ved å bare starte ruteren på nytt.
For å gjøre dette fra webGUI, gå under "Administrasjon" -fanen tilbake til "Management", nederst på siden, klikk på "Reboot router" og vent på at ruteren kommer tilbake.
Det kan ta et par minutter for skriptet å utføre sine oppgaver for første gang.
På WRT54Gx-typen rutere vil du vite når manuset er ferdig med å kjøre fordi det vil blinke Cisco oransje-LED på forsiden av ruteren (andre rutere skal ha et lignende "tell tail" -tegn).
Oppdatering: Denne delen ble * fjernet etter at det ble oppdaget å være en ikke-hardware agnostisk funksjon.
Når vi prøver å se fraværet av elementer på nettet, anbefaler jeg bare å surfe til et par steder for å se påvirkningen.
Men hvis du vil sørge for at prosedyren var vellykket, er det første feilsøkingssteget 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 føre til 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 Pixelserv IP.
Du kan gjøre dette ved å utstede kommandoen nslookup mot "overveldende" 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 normalt ublockert svar vil se ut: - Gjør over.
For å være sikker på at ingenting med ruterenes oppsett er i konflikt med adblokkekonfigurasjonen, må du gjenopprette ruteren til "Fabrikkstandard" og prøve igjen. Når du har lykkes, legger du til dine egendefinerte endringer i håp om at de ikke kommer i konflikt igjen. - Pass på at klienten bruker ruteren som DNS.
Spesielt når du bruker et VPN eller et nettverk som er mer komplekst enn den normale 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 ikke er det samme som ruteren, har du funnet problemet. - Slett dine personlige maskiner DNS-cache.
Dette er fordi ellers kan du fortsatt se annonsene til nettstedet du tester med, ganske enkelt fordi datamaskinen din allerede vet hvordan du får reklameinnholdet selv uten å konsultere DNS for det. På windows ville dette være "ipconfig / flushdns". - Lukk nettleseren.
Noen ganger holder nettleseren informasjonen cached, slik at det ikke hjelper å rydde DNS-bufferen som vist ovenfor. - Når du er i tvil omstart.
Noen ganger kan caches fortsette, og den beste måten å kvitte seg med 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. Også skriptet legger til noen kommandoaliaser for å gjøre debugging enklere.
For å gjøre dette, gå til kategorien "Tjenester" og aktiver syslog-demonen som på bildet nedenfor:
Merk: "Ekstern server" brukes når du har en lytte-syslog-server på en annen maskin (som med kiwi) Hvis du ikke har en, bare la den være tom.
Når aktivert, kan du se feilsøkingsmeldingene ved å se på / var / logger / meldinger fil i en terminal.
* For å se ALLE meldinger fra oppstart kan du bruke "mer / var / log / messages".
* For å se bare meldingene fra skriptet i loggen, bruk "clog" alias.
* Hvis du vil se meldingene når de kommer inn, bruker du i sanntid "hale -f / var / log / meldinger" eller ved aliaset "tlog". - Forstå skriptet.
Selv om jeg har laget denne YouTube-videoen for en eldre versjon av denne håndboken og skriptet, har den fortsatt mange sannheter og forklaringer som gjelder for hvordan den nye og forbedrede versjonen fungerer.