MikroTik: jak wymusić DNS przez AdGuard Home (force-DNS)
Postawiłeś AdGuard Home, ustawiłeś go jako serwer DNS w DHCP i cieszysz się siecią bez reklam. Do czasu, aż zauważasz, że smart TV, telefon z Androidem albo aplikacja z zaszytym na sztywno 8.8.8.8 dalej wyświetlają reklamy. Powód jest prosty: urządzenie omija Twój DNS i pyta bezpośrednio serwer Google/Cloudflare.
Rozwiązanie: skoro cały ruch i tak przechodzi przez router, to na MikroTiku przechwytujemy każde zapytanie DNS (port 53) i siłą przekierowujemy je do AdGuarda. Urządzenie „myśli", że gada z 8.8.8.8, a odpowiada mu Twój bloker. Poniżej komplet komend RouterOS i, co ważne, jak zrobić wyjątki, żeby np. własny komputer administracyjny nie był filtrowany.
192.168.100.98 port 53, sieć LAN to 192.168.100.0/24. Podmień adresy na swoje. Masz jeden interface-list LAN obejmujący porty/most lokalny (domyślna konfiguracja RouterOS zwykle go tworzy).
Krok 1: reguła NAT przekierowująca DNS do AdGuarda
Dodajemy do dstnat dwie reguły — dla UDP i TCP (DNS używa obu). Każde zapytanie na port 53 wychodzące z LAN ląduje na AdGuardzie:
/ip firewall nat
add chain=dstnat action=dst-nat \
protocol=udp dst-port=53 \
in-interface-list=LAN \
src-address=!192.168.100.98 \
to-addresses=192.168.100.98 to-ports=53 \
comment="force-dns-adguard-udp"
add chain=dstnat action=dst-nat \
protocol=tcp dst-port=53 \
in-interface-list=LAN \
src-address=!192.168.100.98 \
to-addresses=192.168.100.98 to-ports=53 \
comment="force-dns-adguard-tcp"
Kluczowy jest warunek src-address=!192.168.100.98 — dzięki niemu sam AdGuard (który przecież też musi odpytywać DNS w górę) nie wpada w pętlę przekierowania na samego siebie. Bez tego stracisz rozwiązywanie nazw na całej sieci.
Krok 2: wyjątki — lista dns-bypass
W praktyce zawsze chcesz kogoś wyłączyć z wymuszania: komputer administracyjny, serwer, na którym stoi coś wrażliwego na filtrację, albo urządzenie, które samo pobiera aktualizacje z zablokowanego przez upstream hosta. Tworzymy listę adresów i dokładamy warunek do obu reguł:
# dodaj hosta do wyjątków
/ip firewall address-list
add list=dns-bypass address=192.168.100.191 comment="PC-admin"
# a w regułach NAT dołóż warunek wykluczający tę listę
/ip firewall nat
set [find comment="force-dns-adguard-udp"] src-address-list=!dns-bypass
set [find comment="force-dns-adguard-tcp"] src-address-list=!dns-bypass
ghcr.io. Dodanie IP Home Assistanta do dns-bypass naprawiło pobieranie, nie rozwalając filtracji na reszcie sieci.
Krok 3: sprawdzenie, czy działa
Z dowolnego urządzenia w LAN (spoza listy bypass) wymuś zapytanie do publicznego DNS-a i zobacz, kto naprawdę odpowiada:
# Windows
nslookup dwoolarnia.example 8.8.8.8
# Linux/macOS
dig @8.8.8.8 example.com
Jeśli force-DNS działa, w statystykach zapytań AdGuarda pojawi się ta domena — mimo że pytałeś „Google". W panelu MikroTika liczniki reguł też będą rosnąć:
/ip firewall nat print stats where comment~"force-dns"
Czego to NIE załatwia: DoH i DoT
Powyższe łapie klasyczny DNS na porcie 53. Nowsze urządzenia i przeglądarki potrafią używać DNS-over-HTTPS (DoH, port 443) lub DNS-over-TLS (DoT, port 853) — tego nie odróżnisz prostą regułą portową, bo DoH wygląda jak zwykły HTTPS.
- DoT (853) możesz zablokować w firewallu (
action=drop, dst-port=853) — urządzenie wtedy spadnie do zwykłego DNS-a, który już łapiesz. - DoH (443) jest trudniejszy — realnie blokuje się go listą znanych serwerów DoH (adres-list z IP publicznych resolverów) i dropem ruchu do nich. AdGuard Home publikuje taką listę.
- W przeglądarce (Chrome/Firefox) warto po prostu wyłączyć „Secure DNS" w politykach.
Router MikroTik dla domu / małej firmy
Do force-DNS wystarczy praktycznie dowolny MikroTik z RouterOS. Popularne, tanie modele na start to hEX (RB750Gr3) do sieci przewodowej albo hAP ax² / ax³, jeśli chcesz też Wi-Fi.
Zobacz modele MikroTik ›Podsumowanie
- Dwie reguły
dst-nat(UDP+TCP) na porcie 53 przekierowują cały DNS z LAN do AdGuarda. - Warunek
src-address=!IP_AdGuardachroni przed pętlą. - Lista
dns-bypassdaje elastyczne wyjątki dla wybranych hostów. - Domknij temat, blokując DoT (853) i znane serwery DoH, jeśli chcesz naprawdę szczelną filtrację.
W kolejnym poradniku pokazujemy, jak postawić samego AdGuard Home w Dockerze na OpenMediaVault — od kontenera po szyfrowany upstream.