Przejdź do treści

PiHole na Raspberry Pi Zero w domowej sieci

W obecnych czasach, na wielu stronach pojawiają się reklamy. O ile te mało inwazyjne są do przeżycia, owyskakujące okienka, których nie da się zamknąć potrafią irytować. Aby temu zaradzić, można wykorzystać rozszerzenia do przeglądarek, takie jak uBlock Origin, ScriptSafe czy PrivacyBadger. Ale co zrobić w przypadku, kiedy nasze urządzenie nie umożliwia instalacji wtyczek w przeglądarce?

Częściowym rozwiązaniem problemu będzie filtrowanie reklam na poziomie zapytań DNS - można to osiągnąć, instalując własny serwer pośredniczący DNS. Jednym z takich rozwiązań jest PiHole - aplikacja służąca do blokowania niechcianych domen. Nie będę dokładnie opisywał, jak to działa, skupmy się na tej specyficznej konfiguracji - czyli PiHole na Raspberry Pi Zero.

PiHole na Raspberry Pi Zero? Ale jak to, przecież nie ma portu LAN!

Owszem, nie ma - w moim domowym routerze Mikrotik Hex S wszystkie porty są zajęte - więc dowolne Raspberry Pi z portem RJ45 odpada. Pi Zero W i połączenie przez WiFi? A co w momencie, kiedy padną AccessPointy?

Na szczęście, większość routerów firmy Mikrotik posiada port USB do modemu LTE - mój router siedzi w metalowej szafie w piwnicy, więc routera LTE nie podepnę - więc czemu by nie wykorzystać go inaczej?

Konfiguracja

Port microUSB w Raspberry Pi Zero domyślnie służy, po wpięciu odpowiedniej przejściówk, jako USB OTG - jednakże, można zmienić jego przeznaczenie i użyć, jako klienta.

  1. Pobierz i zainstaluj Raspberry Pi OS.
  2. Otwórz partycję boot na karcie pamięci.
  3. Na końcu pliku config.txt dopisz:
    dtoverlay=dwc2
  4. Otwórz plik cmdline.txt po rootwait dopisz:
    modules-load=dwc2,g_ether
  5. Stwórz plik ssh i umieść go w katalogu głównym partycji boot - może być dokument tekstowy, z którego usuniesz rozszerzenie.
  6. Włóż kartę pamięci do Malinki i podłącz do komputera - zwróć uwagę, żeby użyć portu USB, nie PWR IN.
  7. Jeśli nie masz na komputerze klienta SSH, zainstaluj PuTTY i spróbuj połączyć się z RPi - nazwa hosta: [email protected], hasło: raspberry.
  8. Jeśli przy próbie połączenia wyświetla się błąd Unable to open connection, najprawdopodobniej musisz doinstalować sterownik RNDIS.
  9. Gdy uda Ci się połączyć, stwórz plik /etc/modprobe.d/g_ether.conf z następującą zawartością (w jednej linii):
    options g_ether idVendor=0x05ac idProduct=0x1402 iProduct=Pi0 iManufacturer=Raspberry
    Pamiętaj o zdefiniowaniu adresu IP w RPi, z inną podsiecią, niż stosowana w sieci LAN.
  10. Wyłącz MikroTika i podepnij Malinkę do portu USB.
  11. Po włączeniu routera, w zakładce /interfaces, powinien pojawić się interfejs lte1.
  12. Teraz dodaj adres IP dla interfejsu lte1 - w tej samej podsieci, jak na RPi. W tym momencie powinieneś móc połączyć się z Maliną, używając wcześniej ustawionego adresu IP.
  13. Ustaw maskaradę albo NAT, aby Malinka mogła łączyć się z internetem.
  14. Zainstaluj i skonfiguruj PiHole.
  15. W zakładce DHCP Server/Networks zmień adres IP dotychczasowego serwera DNS na adres RPi.
  16. Opcjonalnie, ustaw stałe przekierowanie zapytań kierowanych na dowolny adres na port DNS na RPi - jeśli jakieś urządzenie będzie chciało wymusić użycie innego serwera DNS, jego żądanie zostanie przekierowane na Malinkę.
    /ip firewall nat
    add chain=dstnat action=dst-nat to-addresses=(ADRES PIHOLE) protocol=udp src-address=!(ADRES PIHOLE) dst-address=!(ADRES PIHOLE) dst-port=53
    add chain=dstnat action=dst-nat to-addresses=(ADRES PIHOLE) protocol=tcp src-address=!(ADRES PIHOLE) dst-address=!(ADRES PIHOLE) dst-port=53
    add chain=srcnat action=masquerade protocol=udp src-address=(ADRES PODSIECI/SKRÓT MASKI) dst-address=(ADRES PIHOLE) dst-port=53
    add chain=srcnat action=masquerade protocol=tcp src-address=(ADRES PODSIECI/SKRÓT MASKI) dst-address=(ADRES PIHOLE) dst-port=53
    

Gotowe - w ten sposób postawiliśmy PiHole na Raspberry Pi Zero.

Skip to content