Jak usunąć reklamy z Pixelserv na DD-WRT
Istnieje wiele sposobów blokowania reklam w przeglądarce, ale co jeśli mógłbyś zablokować je na routerze? Oto jak używać oprogramowania wbudowanego DD-WRT i świadomego "zatruwania DNS", aby zablokować reklamy dla każdego urządzenia w sieci.
Przegląd
Aktualizacja: Przewodnik zaktualizowany, aby odzwierciedlić opinie dostarczone przez komentujących i zaktualizował pakiet anty-ads nowym plikiem wykonywalnym serwera pikseli i dziennikiem zmian.
Pierwszym pytaniem, które teraz wszyscy myślą, jest "dlaczego nie skorzystać z bloku reklam?"
Dla wielu osób po prostu nie ma powodu, zwłaszcza z nową funkcją chrome do replikowania rozszerzeń, których używasz do każdego komputera, na którym używasz chrome.
Odpowiedź leży gdzieś pomiędzy zredukowanym narzutem, że nie trzeba uczyć wszystkich użytkowników w twojej sieci o blokach reklamowych (mówię do ciebie mamo, siostrzyczka, babcia i sekretarka biurowa) i wygodę, z jaką nie przejmuj się tym na każdy skonfigurowany komputer. Zakładając, że w sieci będą znajdować się komputery, na których nie skonfigurujesz swojego osobistego środowiska (na przykład "serwery podstawowe" lub maszyny wirtualne).
Uwaga: Mimo że używam poniższej metody na moim macierzystym routerze, znalazłem ad-blok, który jest doskonałym dodatkiem do tego i polecam używanie obu metod w połączeniu. także jeśli nie masz routera DD-WRT za pomocą bloku reklamowego, to im więcej. W rzeczywistości bardzo podoba mi się ten program, przekazałem go programistce i zachęcam wszystkich, aby to robili, aby utrzymać jego rozwój.
Jak to działa?
Zasadniczo działa to poprzez celowe zatruwanie naszego DNS w celu zwrócenia konkretnego adresu IP dla domen na niezatwierdzonej liście. Ta niezatwierdzona lista będzie zawierała nazwy domen witryn, które są odpowiedzialne wyłącznie za dostarczanie treści reklamowych, więc nie będziemy za nimi tęsknić.
Skonfigurujemy dodatkowy serwer HTTP na routerze, aby wyświetlał przezroczysty obraz jednopikselowy, jako odpowiedź dla dowolnego żądania adresu URL. W połączeniu z "błędnym" rozwiązaniem DNS spowoduje to, że klienci sieci zażądają treści z naszego wewnętrznego serwera pikseli i otrzymają pusty obraz w odpowiedzi.
Aby wygenerować niezatwierdzoną listę, utworzymy jedną osobistą listę w połączeniu z dwiema dynamicznie pobieranymi listami. listy dynamiczne to plik hosta MVPS i lista domen Yoyo, razem mają one bardzo obszerną listę stron reklamowych. Korzystając z tych list, jesteśmy odpowiedzialni za dodanie delty witryn, które nie znajdują się jeszcze w żadnej z nich, w naszej osobistej liście.
Ustanowimy także "białą listę" domen, z których nie chcemy być blokowani z jakiegokolwiek powodu.
Wymagania wstępne i założenia
- Cierpliwość młoda, to jest długa lektura.
- Ta procedura została stworzona i przetestowana na DD-WRT (v24pre-sp2 10/12/10 mini r15437), jako że powinieneś już mieć tę wersję lub później zainstalować na routerze, aby z niej korzystać. Więcej informacji znajduje się na stronie DD-WRT.
- Dla ułatwienia wyjaśnienia, zakłada się, że router został przywrócony do "domyślnych ustawień fabrycznych" lub że użyte ustawienia nie zmieniły się od ich "gotowych" ustawień od tego czasu.
- Komputer kliencki używa routera jako serwera DNS (jest to ustawienie domyślne).
- Miejsce na JFFS (w razie wątpliwości polecam używanie mini wersja DD-WRT).
- Zakłada się, że twoja sieć jest już * ustawiona i jest to klasa C (która ma podsieć 255.255.255.0) jako ostatnie IP w tej sieci klasy C (x.y.z.254) Zostanie przypisany do programu serwera pikseli.
- Gotowość do zainstalowania winSCP.
* Skrypt nie będzie w stanie dostosować list bloków po pierwszym uruchomieniu do następnego cyklu odświeżania (3 dni).
Kredyty
Aktualizacja: Specjalne podziękowania dla "mstombów" za świetny kawałek kodu C bez jego pracy to wszystko nie byłoby możliwe, "Oki" do kompilowania wersji kompatybilnej z Atheros i cytowania ;-) i "Nate" za pomoc przy QA-ing.
Podczas gdy było wiele pracy, aby udoskonalić tę procedurę po mojej stronie, inspiracja została zainspirowana przez facetów na forum DD-WRT, a niektóre z fundamentów tego przewodnika można znaleźć na stronie "ad-blocking with DD- WRT revisited (prosty) "," pixelserv bez Perla, bez żadnych jffs / cifs / usb free "i" Flexion.Org Wiki na DNSmasq ", a także inne.
Do roboty
Włącz SSH dla dostępu SCP
Włączając SSH, dajemy sobie możliwość połączenia się z routerem za pomocą protokołu SCP. z włączoną opcją, możemy następnie użyć programu winSCP do wizualnej nawigacji w strukturze folderów routera (jak zobaczymy później).
Aby to zrobić, skorzystaj z webGUI, przejdź do zakładki "Usługi". Znajdź sekcję "Bezpieczna powłoka" i kliknij przycisk "Włącz" dla ustawienia SSHd.
Gdy to zrobisz, webGUI powinien wyglądać jak poniżej i możesz kliknąć "Zapisz" (nie rób tego aplikuj jeszcze).
Włącz JFFS
Aby dokonać tej konfiguracji w taki sposób, jaki by był stabilny, powtarzalny i * być "dobrym obywatelem internetu", użyjemy JFFS do przechowywania jak największej liczby konfiguracji. Są inne sposoby, aby to zrobić bez włączania JFFS, jeśli nie możesz tego zrobić ze względu na ograniczenia miejsca, ale nie są one tutaj omówione.
* inne metody powodują, że router pobiera pliki wykonywalne i dynamiczne listy serwerów pikseli za każdym razem, gdy skrypt jest uruchamiany. ponieważ obciąża to serwery przechowujące listy i pliki wykonywalne, a to kosztuje kogoś, ta metoda stara się tego uniknąć, jeśli to możliwe.
Jeśli jeszcze nie wiesz, co to jest JFFS, to wyjaśnienie, zaczerpnięte z wpisu wiki DD-WRT o JFFS powinno wyjaśnić:
System plików rejestrujących pliki dziennika (JFFS) pozwala na zapisywalny system plików Linux na routerze obsługującym DD-WRT. Służy do przechowywania programów użytkownika, takich jak Ipkg i danych, do niedostępnej w inny sposób pamięci flash. Umożliwia to zapisywanie niestandardowych plików konfiguracyjnych, hostowanie niestandardowych stron WWW przechowywanych na routerze i wiele innych rzeczy, które nie są dostępne bez JFFS.
Aby włączyć funkcję JFFS na routerze, przejdź do zakładki "Administracja" i znajdź sekcję JFFS. poniższy obrazek pokazuje, gdzie można znaleźć tę sekcję w zakładce "Administracja".
W sekcji Wsparcie JFFS2 kliknij przycisk "Włącz" dla "JFFS2" i (gdy pojawi się) ustawienia "Wyczyść JFFS2". Po wybraniu kliknij "Zapisz".
Po zapisaniu ustawień, nadal na karcie "Administracja", zrestartuj router za pomocą przycisku "Ponownie uruchom router". Spowoduje to zastosowanie ustawień i wykonanie wymaganego "formatu" partycji "JFFS".
Gdy webGUI wróci z ponownego uruchomienia na kartę "Administracja", odczekaj jeszcze pół minuty i odśwież stronę.
Jeśli się powiedzie, powinieneś zobaczyć, że twój uchwyt JFFS ma trochę wolnego miejsca, jak na zdjęciu.
Konfiguracja serwera Pixel
Pobierz i wyodrębnij pakiet antydopingowy do archiwum zip w formacie dd-wrt, który zawiera plik wykonywalny serwera pikseli (nie przyjmujemy kredytów, unikając tylko "gorących linków"), skrypt blokujący reklamy (napisany przez ciebie naprawdę) i osobisty lista domen stworzona przez "Mithridates Vii Eupator" i I.
Nadszedł czas, aby pliki zostały umieszczone w gnieździe JFFS na routerze. w tym celu zainstaluj winSCP (jest to typ "next -> next -> finish") i otwórz go.
W głównym oknie wpisz następujące informacje:
Nazwa hosta: adres IP routera (domyślnie 192.168.1.1)
Numer portu: pozostaw bez zmian na 22
Nazwa Użytkownika: korzeń (nawet jeśli zmienisz nazwę użytkownika dla webGUI, użytkownik SSH zawsze będzie * root *)
Plik klucza prywatnego: pozostaw puste (jest to konieczne tylko w przypadku tworzenia uwierzytelniania opartego na parze kluczy, którego nie mamy)
Protokół pliku: SCP
Musimy również wyłączyć "Lookup user group", jak pokazano poniżej (dzięki mstombs za wskazanie tego), ponieważ winSCP spodziewa się pełnej wersji Linuksa po drugiej stronie, której twórcy DD-WRT, mimo całej doskonałej pracy, nie byli w stanie dostarczyć (głównie dlatego, że po prostu nie ma wystarczająco dużo miejsca). Jeśli pozostawisz to zaznaczone, napotkasz przerażające wiadomości podczas łączenia i zapisywania edytowanych plików.
Wybierz opcję Zaawansowane, a następnie usuń zaznaczenie opcji "Wyszukaj grupy użytkowników".
Chociaż jest to opcja opcjonalna, możesz zapisać ustawienia teraz do późniejszego wykorzystania. Jeśli zdecydujesz się zapisać ustawienia, które są zalecane, zaleca się (pomimo jawnych okrzyków z "azylu ochronnego", że bezczeszczymy samo istnienie SSH), że zapiszesz hasło.
Wtedy twoje główne okno będzie wyglądało jak na zdjęciu, a wszystko, co musisz zrobić, aby połączyć się z routerem, to dwukrotnie kliknąć wpis.
Ponieważ po raz pierwszy łączysz się z routerem, winSCP zapyta, czy chcesz zaufać odciskowi palca drugiej strony. Kliknij "Tak", aby kontynuować.
Twórcy DD-WRT zaimplementowali komunikat powitalny Banner z pewnymi informacjami na temat zainstalowanego oprogramowania układowego. raz czerwony, kliknij pole wyboru "Nigdy nie pokazuj tego banera" i "Kontynuuj".
Po podłączeniu przejdź do folderu najwyższego poziomu (AKA root "/"), a następnie wróć do "/ jffs", ponieważ jest to jedyne trwałe miejsce zapisu w systemie plików routera ("/ tmp" nie przetrwa restartu a pozostałe są tylko do odczytu).
Utwórz nowy folder, naciskając klawisz F7 lub klikając prawym przyciskiem myszy puste miejsce, umieść kursor nad "Nowy" i kliknij "Katalog".
Nazwij nowy katalog "dns". tworzymy ten katalog, aby zachować porządek w katalogu jffs do przyszłego użytku i ponieważ w większości zmieniamy sposób działania usługi DNS.
Skopiuj pliki "pixelserv" i "disable-adds.sh" z archiwum zip anty-ads-pack-for-dd-wrt, zaznaczając je (użyj klawisza "wstaw"), naciskając "F5", a następnie "Kopiuj ".
Uwaga: Jeśli twój router jest oparty na Atheros (możesz to sprawdzić na wiki DD-WRT), musisz użyć pixelserv_AR71xx dostarczonego przez Oki i zawartego w pakiecie i zmienić jego nazwę na "pixelserv" przed kontynuowaniem.
Gdy pliki znajdują się na routerze, musimy je ustawić jako wykonywalne, wybierając je (ponownie użyj "wstaw"), kliknij prawym przyciskiem myszy, a następnie "właściwości".
W oknie właściwości kliknij "X" dla wiersza "Właściciel". to da uprawnienia do wykonywania plików.
Ustawienia routera
Teraz, gdy ustawiony jest etap, możemy nakazać routerowi uruchomienie skryptu blokującego reklamy podczas uruchamiania.
Aby to zrobić, w webGUI przejdź do zakładki "Administracja", a następnie zakładki "Polecenia".
W polu tekstowym "Polecenia" wpisz lokalizację skryptu jako "/jffs/dns/disable_adds.sh", jak na obrazku, a następnie kliknij "Zapisz start".
Jeśli się powiedzie, powinieneś zobaczyć, że skrypt stał się częścią uruchamiania routera, jak na powyższym obrazku.
Konfigurowanie listy zablokowanych domen osobistych (opcjonalnie)
Ta lista umożliwia dodawanie domen do niezatwierdzonych list, jeśli okaże się, że dwie dynamiczne listy czegoś nie przechwytują.
Aby to zrobić, istnieją dwie opcje, które działają w połączeniu, więc możesz używać obu zgodnie z tym, co jest dla ciebie wygodniejsze.
Uwaga: The Składnia jest ważna, Ponieważ faktycznie tworzymy dyrektywy konfiguracyjne, demon DNSMasq (proces odpowiedzialny za translację nazw DNS na IP) użyje bezpośrednio. W związku z tym niepoprawna składnia spowoduje awarię usługi i uniemożliwi routerowi rozwiązywanie adresów IP dla nazw domen (zostały upomniane).
Aby znaleźć niepoprawne nazwy domen do zablokowania, możesz użyć naszego przewodnika "Znajdź tajne wiadomości w nagłówkach witryn" jako podkładu. Kroki w celu znalezienia nazw domen reklamowych są praktycznie takie same, tyle tylko, że w tym przypadku szukasz adresu zamiast wiadomości.
Pierwszy i niewątpliwie bardziej przystępny sposób polega na umieszczeniu listy w polu konfiguracji "DNSMasq" w pliku wegGUI. Dzieje się tak, ponieważ aby dodać do tej listy, można po prostu uzyskać dostęp do webGUI zamiast iść "pod maską", aby dokonać zmian.
Przejdź do zakładki "Usługi", znajdź sekcję "DNSMasq" i tam znajdź pole tekstowe "Dodatkowe opcje DNSMasq".
W tym polu tekstowym wprowadź listę domen, które chcesz zablokować, używając składni "address = / domain-name-to-block / pixel-server-ip", jak pokazano na poniższym obrazku:
Gdzie w tym przykładzie "192.168.1.254" jest adresem IP wygenerowanym dla serwera pikseli w oparciu o "adres sieciowy" twojej sieci LAN. Jeśli twój adres sieciowy jest czymś innym niż 192.168.1.x będziesz musiał odpowiednio dostosować adres dla serwera pikseli.
Po zakończeniu kliknij "Zapisz" u dołu strony (nie stosuj jeszcze).
Drugi opcja polega na złożeniu listy domen, które chcesz zablokować, do pliku "personal-ads-list.conf", który sam i i "Mithridates Vii Eupator" zebrał. Ten plik jest częścią archiwum zip pobranego wcześniej i jest świetnym początkiem dla obu metod.
Aby go użyć, w razie potrzeby użyj swojego ulubionego edytora tekstu, aby dostosować adres IP serwera pikseli (obowiązują te same ograniczenia, co powyżej). Następnie po prostu skopiuj go do katalogu "/ jffs / dns", ponieważ masz inne pliki. Kiedy już tam będziesz, możesz użyć WinSCP do edycji i dodawania domen.
Konfigurowanie białej listy
Oto lista domen, które zostaną pominięte na dynamicznych listach "hostów" i "domen".
Jest to konieczne, ponieważ samo blokowanie niektórych domen powoduje nieprawidłowe działanie witryn. najbardziej godnym uwagi przykładem jest "google-analytics.com".
Jeśli zablokujemy domenę, nie zmieni to faktu, że witryny, które jej używają, mają przeglądarkę, która pobiera JavaScript, który działa w przypadku takich zdarzeń, jak opuszczenie strony. Oznacza to, że w przypadku takiej witryny Twoja przeglądarka spróbuje "zadzwonić do domu", kontaktując się z domeną google, nie zrozumie odpowiedzi i będziesz musiał poczekać, aż skrypt wygaśnie, aby przejść do następnej strony. Nie jest to przyjemne doświadczenie związane z surfowaniem i dlatego każda domena zawierająca "google-analytics" i "googleadservices" jest * bezwzględnie wyłączona z filtrowania.
Ta lista jest tworzona dla ciebie z wyżej wymienionymi domenami, kiedy skrypt jest uruchamiany po raz pierwszy, w katalogu "/ jffs / dns".
Aby użyć białej listy, otwórz plik z winSCP i **sięgacz do listy domen, które chcesz wyłączyć, zachowując ostrożność, aby nie pozostawiać pustych linii (pozostawienie pustego wiersza spowoduje usunięcie wszystkich domen ze wszystkich list).
* Chociaż skrypt tworzy białą listę z domenami w nim w pierwszym uruchomieniu, NIE nalega na ich prezenty na przyszłe biegi. więc jeśli uważasz, że google powinno zostać zablokowane pomimo wyżej wymienionych problemów, możesz usunąć domeny z białej listy.
** Musisz wprowadzić nowe domeny, które chcesz na początku listy. Dzieje się tak z powodu błędu w interpretacji nowych linii przez basha ... przykro mi, nie mam jeszcze żadnej pracy.
Wykonanie
To jest to, nadszedł czas, aby wywołać skrypt i zobaczyć wyniki, po prostu restartując router.
Aby to zrobić z webGUI, w zakładce "Administracja" wróć do "Zarządzania", w dolnej części strony kliknij "Uruchom ponownie router" i poczekaj, aż router powróci do góry.
Może minąć kilka minut, zanim skrypt wykona swoje obowiązki po raz pierwszy.
W przypadku routerów typu WRT54Gx będziesz wiedzieć, kiedy skrypt zakończył wykonywanie, ponieważ będzie migał pomarańczowa dioda LED Cisco z przodu routera (inne routery powinny mieć podobny znak "tell tail").
Aktualizacja: ta część została * usunięta, gdy została odkryta jako nie-sprzętowa funkcja agnostyczna.
Ponieważ próbujemy dostrzec brak elementów w sieci, polecam po prostu surfowanie do kilku stron, aby zobaczyć wpływ.
Jeśli jednak chcesz się upewnić, że procedura zakończyła się powodzeniem, pierwszy etap debugowania w sekcji rozwiązywania problemów jest doskonałym miejscem na początek.
* To jest rzeczywiście skomentowane, więc możesz je przywrócić, jeśli na pewno nie spowoduje problemów w konfiguracji.
Cieszyć się!
Rozwiązywanie problemów
Jeśli napotkasz problemy, możesz zrobić kilka rzeczy, aby sprawdzić, co poszło nie tak.
- Sprawdź, czy domena reklamowa została rozstrzygnięta na adres IP pixelserv.
Możesz to zrobić, wydając polecenie nslookup w domenie "obrażającej". Na przykład "ad-emea.dubleclick.com" jest częścią zablokowanych hostów z osobistej listy. Wydając polecenie "nslookup ad-emea.dubleclick.com" w wierszu polecenia, wynik powinien wyglądać następująco:
Gdzie powinna wyglądać normalna odblokowana odpowiedź: - Przerobić.
Aby upewnić się, że nic z konfiguracją routera nie koliduje z konfiguracją bloku reklam, przywróć router do "Factory Defaults" i spróbuj ponownie. Po pomyślnym dodaniu niestandardowych zmian w nadziei, że nie będą one ponownie konfliktów. - Upewnij się, że klient używa routera jako serwera DNS.
Szczególnie w przypadku korzystania z sieci VPN lub sieci, która jest bardziej złożona niż normalna konfiguracja routera do komputera, możliwe jest, że komputer kliencki po prostu nie używa routera jako swojego DNS. W powyższym poleceniu bardzo łatwo jest zobaczyć, czym jest serwer DNS, z którego korzysta klient, jeśli adres IP nie jest taki sam jak router, problem został znaleziony. - Wyczyść pamięć podręczną DNS maszyn osobistych.
Dzieje się tak dlatego, że w przeciwnym razie możesz nadal wyświetlać reklamy w witrynie, w których testujesz, ponieważ komputer wie już, jak uzyskać treść reklamy samodzielnie, bez sprawdzania DNS. W systemie Windows będzie to "ipconfig / flushdns". - Zamknij przeglądarkę.
Czasami przeglądarka przechowuje informacje w pamięci podręcznej, więc wyczyszczenie pamięci podręcznej DNS, jak pokazano powyżej, nie pomaga. - W razie wątpliwości uruchom ponownie komputer.
Czasami pamięci podręczne mogą się utrzymywać, a najlepszym sposobem na ich pozbycie się jest ponowne uruchomienie. Zacznij od routera i jeśli problem będzie się powtarzał, komputer kliencki. - Użyj syslog.
Możesz aktywować demona syslog routera, a następnie przejrzeć komunikaty, aby sprawdzić, czy skrypt napotkał jakiekolwiek problemy, sprawdzając jego komunikaty. Ponadto skrypt dodaje kilka aliasów poleceń, aby ułatwić debugowanie.
Aby to zrobić, przejdź do zakładki "Usługi" i włącz demona syslog jak na poniższym obrazku:
Uwaga: "Serwer zdalny" jest używany, gdy masz odsłuchowy serwer syslog na innym komputerze (np kiwi) jeśli go nie masz, po prostu pozostaw to pole puste.
Po włączeniu możesz zobaczyć komunikaty debugowania, patrząc na / var / logs / messages plik w terminalu.
* Aby zobaczyć WSZYSTKIE wiadomości od rozruchu, możesz użyć "more / var / log / messages".
* Aby zobaczyć tylko wiadomości ze skryptu w dzienniku, użyj aliasu "clog".
* Aby zobaczyć wiadomości przychodzące w czasie rzeczywistym, użyj "tail -f / var / log / messages" lub jego alias "tlog". - Zrozum skrypt.
Mimo że zrobiłem ten film na YouTube dla starszej wersji tego przewodnika i skryptu, wciąż posiada on wiele prawd i wyjaśnień, które mają zastosowanie do tego, jak działa nowa i ulepszona wersja.