Przejdź


Prosty domowy serwer dns

28 Lis 2009 @ 12:23:19 groszek 12 komentarzy

Ostatnio, po tym jak brat mi zużył cały limit iplusa na youtube.com, postanowiłem stworzyć jakiś mechanizm blokowania stron. Nic specjalnego nie potrzebowałem, a żeby też w końcu zamienić hosts file na coś bardziej sensownego (miałem tam trochę potrzebnych mi wpisów) postanowiłem zainwestować w serwer DNS.

I tu były schody, bo konfiguracja takiego serwera, dla moich potrzeb (własne domeny, nadpisanie innych domen własnym ip, te sprawy) konfiguracja BINDa czy czegoś takiego jest po prostu bez sensu. Jest niewygodna. Dlatego po wypróbowaniu kilku różnych serwerów DNS postanowiłem napisać własny - w ruby.

Co jest ważne? Mogę ustawić regexp dla którego serwer zwróci taki ip, jaki chcę. Jest to bardzo wygodne, bo może też służyć blokowaniu reklam i statystyk (a nawet samych wywołań serwera - co nas będą psubraty szpiegować!). A napisanie tego serwera oraz jego późniejsze przepisanie było szybsze i łatwiejsze niż skonfigurowanie dostępnego softu.

Dodatkowo jest tam wbudowany cache, więc nie będzie ciągle odpytywać nadrzędnego serwera.

W mojej sieci jest takie ustawienie, że wszystkie komputery odpytują o DNS router (192.168.0.1), ten ma redirect na komputer 1 (który robi za bramę - router myśli że to brama isp), tutaj jest sam cache DNS który odpytuje komputer 2 (mój serwer mediów wszelakich, gdzie jest też trochę innego softu, jakieś bazy danych, www, svn i właśnie ten skrypt). Jako ciekawostkę powiem że jak się przegląda adres NASa (192.168.0.102) przez http, to wyskakuje "strona zablokowana! Możesz jednak skorzystać z: muzyka, filmy, seriale, anime". I można sobie przeglądać katalogi gdzie to trzymam, a wybranie pliku (np. hardcoregrindmetalpron.avi) wyświetli film w przeglądarce - prosty skrypt na modphp w apache (:)) przetworzy request (mod_rewrite) na ramkę media playera, dając jako źródło... ten sam film, ale via samba. Czyli media player widzi wtedy \192.168.0.102\Movies\hardcoregrindmetalpron.avi.

Ok, opisanie mojej sieci nie było celem, więc nie przeciągając dłużej, oto skrypt: http://pastie.org/private/c9eq1i1rklxbceuz9feza


Komentarze:

28 Lis 2009 @ 12:32:46 pecet

Podobno walczysz z cenzurą, ostatnio się burzyłeś tutaj, a sam cenzorem jesteś ;)

28 Lis 2009 @ 12:33:10 groszek

A co ja cenzuruję? :O

28 Lis 2009 @ 12:36:01 pecet

Blokujesz strony bratu == jesteś cenzorem internetu.

28 Lis 2009 @ 12:36:03 Wasacz

Nie eskejpujesz kropek w regexpach :)

28 Lis 2009 @ 12:39:43 groszek

No tak, ale mając 1gb limitu na miesiąc, jest to stan wyższej konieczności, a jakieś durne filmiki na youtube nie są warte pierda :] (szczególnie że mam tu prawie terabajt prawdziwych filmów i seriali)

Wasacz: fakt, ale i tak . pasuje do . ;) a jak mi zablokuje video-google-com.pl to też dobrze.

28 Lis 2009 @ 12:41:25 Wasacz

A tak swoją drogą, to jeszcze Privoxy by się do tego nadało.

28 Lis 2009 @ 12:49:11 groszek

Privoxy mam polaczone z zproxy na innym serwerze, kompresuje mi obrazki :P nie zawsze to mam włączone, ale przy np. przeglądaniu allegro się przydaje.

28 Lis 2009 @ 17:51:51 rozie

Bind to overkill, ale nadpisania i własne domeny umie dnsmasq.

28 Lis 2009 @ 17:56:35 groszek

Możliwe, ale jak mówiłem, tak było szybciej i łatwiej niż jakbym miał się wgryzać w dokumentację. No i czy dnsmasq ma wersje na windows (lub czy da się skompilować bez przepisywania połowy kodu) i czy ma regexpy przy domenach?

29 Lis 2009 @ 09:15:25 rozie

Szybciej napisać niż przejrzeć konfig i dostosować opcje, które są podane z przykładami? Nie sądzę.

Serwer DHCP i DNS na Windows? Cóż, ja bym po prostu cały dostęp do netu (obsługa modemu, router, firewall, DHCP, DNS i co tam jeszcze) wywalił na jakąś małą i słabą maszynkę.

Wersja na Windows - nie mam pojęcia, nie interesowałem się.

Regexpy? Nie mam pojęcia, szybkie sprawdzenie pokazuje, że nie. OTOH po co Ci regexpy przy domenach? Wildcard nie starczy?

29 Lis 2009 @ 11:29:19 groszek

To jest mała i stara maszynka, oprócz terabajta filmów/innych dóbr jest tam jest serwer dns (opisany), ale dhcp i "węzeł" komputerów to sprzętowy dir-300.
Modem (brama), cache dns (odpytuje skrypt) i firewall są na moim laptopie, gdy jest wyłaczony to znaczy że mnie nie ma i można ten modem bezpośrednio połączyć z innym komputerem.

29 Lis 2009 @ 12:35:40 rozie

Nadal uważam, że prościej byłoby wywalić tego dir-300, przenieść dhcp na tego starego kompa (zakładam, że chodzi 24/7 lub przynajmniej tak samo, jak dir-300), przenieść modem na stałe do tego samego kompa (skoro i tak zostaje w domu - z tego co piszesz wynika, że tak). Firewall i cache dns - także przenieść.

Jedyne co zostanie, to ewentualny wireless (i to jedyny powód do pozostawienia dir-300; powinien mieć bridge mode, a jeśli nie, to zdaje się że daje się tam dd-wrt wrzucić, które to umożliwia).

Uprości się wszystko drastycznie, skończy się przepinanie modemu między kompami. I na dodatek prosty dnsmasq załatwia i cache dns, i przekierowania, i serwer DHCP.

Pierdol licencje, kopiuj na zdrowie!