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ń: 12530
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ę.