Prosty domowy serwer dns
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
Podobno walczysz z cenzurą, ostatnio się burzyłeś tutaj, a sam cenzorem jesteś ;)
A co ja cenzuruję? :O
Blokujesz strony bratu == jesteś cenzorem internetu.
Nie eskejpujesz kropek w regexpach :)
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.
A tak swoją drogą, to jeszcze Privoxy by się do tego nadało.
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.
Bind to overkill, ale nadpisania i własne domeny umie dnsmasq.
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?
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?
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.
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.