Wycinanie reklam za pomocą dnsmasq i pixelserva

Kategoria: Artykuły, etykiety: reklamy, dnsmasq

Dodany: 2010-10-03 22:34 (zmodyfikowany: 2010-10-06 20:21)
Przez: lis6502

Wyświetleń: 12460

Dzisiaj drogie dzieci, nauczymy się jak uprzykrzyć życie reklamodawcom, a sobie oszczędzić łącza, zasobów systemowych i nerwów.

Sposób nie jest doskonały. Niektóre serwisy zawierają własne repozytoria reklam, także wciąż jesteśmy skazani na 'bezpłatną analizę muskulatury' i inne pierdoły tego pokroju.

You've been warned.

W trakcie pierwszej implementacji tegoż systemu okazało się, że w sieci istnieje poradnik ogarniający całe zagadnienie. Chciałem jednak przybliżyć jego treść osobom mniej obeznanym z językiem angielskim i podzielić się wrażeniami, których sam doświadczyłem.


  • Wujku Lisie, co to jest dnsmasq i dlaczego go tak chwalisz ?

Dnsmasq jest to mikroserwer dhcp i dns. Przeznaczony jest dla małych sieci takich jak domowe lany, ale w konfiguracji gdzie komputer jest podłączony bezpośrednio do Internetu (przez router czy modem) sprawuje się równie dobrze.

  • Domowy LAN? Po co to komu?

Wujek taki ma i bardzo sobie chwali, ale skupię się na instalacji lokalnej.

  • Będzie bolało?

RTFM, a nie powinno ;)

Zaczynajmy. Na dobry początek instalujemy dnsmasq

apt-get install dnsmasq

W moim przypadku jest to wersja 2.55 (repozytorium unstable). Na prototypowym Gentoo mam 2.52 i korzystam z tego samego konfiga. W wersji z Lenny'ego (ktoś tego używa ?) również nie powinno być problemów.

Do /etc/dnsmasq.conf wpisujemy następującą treść:

strict-order
conf-file=/etc/badhosts.conf
log-queries
log-facility=daemon

Nie zagłębiając się w szczegóły konfiguracji (więcej w man dnsmasq), w kolejnym kroku pobieramy listę reklamiarzy,

wget lis6502.sh.dug.net.pl/bads.template -O /etc/badhosts.conf

oraz konfigurujemy dodatkowy wirtualny interfejs na potrzeby pixelserva.

Dopisz do /etc/network/interfaces:

auto lo:0
iface lo:0 inet static
      address 127.0.250
      netmask 255.0.0.0

Uruchom świeżo skonfigurowany interfejs:

ifup lo:0
  • Dużo tego jeszcze wujku ?

75% roboty za nami ;) Pozostała rzecz kluczowa, czyli PixelServer.

  • WTF ?

PixelServer to mały perlowy skrypt, którego życiową misją jest wysłanie protokołem http, małego, przezroczystego GIF'a o wymiarach 1x1 piksel.

wget lis6502.sh.dug.net.pl/pixelserv.pl -O /usr/local/sbin/pixelserv.pl
wget lis6502.sh.dug.net.pl/rcskrypt.sh  -O /etc/init.d/ps
chmod u+x /etc/init.d/ps
chmod u+x /usr/local/sbin/pixelserv.pl

Uruchom

/etc/init.d/ps start
  • Fajnie to wygląda, ale co ja robię?

Wejdź na http://127.0.0.250 ;przeglądarka zmienia tytuł na Obrazek GIF 1x1. O to nam chodziło. Teraz czas na zmianę najważniejszego dla naszego systemu serwera DNS. W tym celu jako pierwszą linię w /etc/resolv.conf wpisz

 nameserver 127.0.0.1

Zrestartuj dnsmasq przez

 /etc/init.d/dnsmasq restart

i wejdź na nk.pl, wrzuta.pl, czy inne zareklamione miejsce.

Dodaj do autostartu wszystkie usługi

ln -s /etc/init.d/ps /etc/rc2.d/S30pixelserv
ln -s /etc/init.d/dnsmasq /etc/rc2.d/S30dnsmasq

Gotowe.

  • Ale wujku! Ja mam internet przez router i co restart komputera musiałbym dopisywać do resolv.conf. A miało nie boleć!

Założę się że korzystasz z DHCP. W tym celu przygotujemy naszego DNS'a.

W pliku /etc/dhcp/dhclient.conf zmień linię

#prepend domain-name-servers 127.0.0.1;

na

prepend domain-name-servers 127.0.0.1;
  • Fajnie, ale jak dodać nowe serwery z reklamami (bądź inne których nie chcę?)

Edytuj /etc/badhosts.conf z zachowaniem składni

address=/adres.reklamiarza/127.0.0.250

-A skąd mam wziąć adresy reklamiarzy?

To już temat na osobny artykuł ;) W miarę możliwości będę uaktualniał listę.

Uwaga: Do reklamiarzy zaliczam również Google z ich adsensem, doubleclickiem i innymi programami partnerskimi.

OSnews Wykop Blip Flaker Kciuk Śledzik Facebook Identi.ca Twitter del.icio.us Google Bookmarks