Jedna linia dnsmasq może odpowiedzieć na nazwę komunikatem NXDOMAIN i to jest cały mechanizm. Nigdy nie czyta HTML, nie analizuje ścieżki żądania ani nie widzi, co aplikacja robi z połączeniem, które już otworzyła. Porównanie jej z rozszerzeniem przeglądarki to zatem porównanie dwóch różnych zadań. Jedno decyduje, czy nazwa się rozwiązuje; drugie decyduje, co dzieje się potem.

Co naprawdę kontroluje filtr nazw

Opcja address=/metrics.example/, bez niczego po ostatnim ukośniku, sprawia, że resolver zwraca NXDOMAIN dla tej nazwy i jej subdomen. Pozostawienie adresu pustym jest istotną częścią: pozwala uniknąć wysyłania klientów do niepowiązanego serwera zastępczego albo udawania, że adres loopback jest prawdziwym celem. Podręcznik dnsmasq opisuje tę postać jako odpowiedź negatywną, a nie przekierowanie.

Wszystko, co reguła może zrobić, wynika z tej jednej decyzji. Klient, który pyta ten resolver, dostaje odpowiedź negatywną; klient, który pyta inny resolver, dostaje to, co tamten mówi. Filtr nie wie, której ścieżki, którego ciągu zapytania ani którego konta aplikacja by użyła.

Ta szczegółowość ma znaczenie, bo jedna nazwa hosta często służy kilku celom. Punkty logowania, obrazy i śledzenie mogą dzielić domenę, a reguła usuwająca całą nazwę może usunąć wraz z nią cały proces pracy. Polityka na poziomie nazwy musi zaakceptować ten kompromis albo wybrać węższe nazwy.

Czym różni się blokada po stronie klienta

Rozszerzenie przeglądarki widzi żądanie, zanim ono wyjdzie, więc może dopasować ścieżkę URL, anulować konkretne żądanie i ukryć element, który pokazałby wynik. Może zezwolić na example.com/article, odmawiając example.com/ads/, czego żadna odpowiedź DNS nie wyrazi. Ten widok na poziomie ścieżki to zdolność, której resolver po prostu nie ma. To także powód, dla którego lista filtrów zbudowana dla jednego narzędzia rzadko działa tak samo w drugim.

Ceną jest zakres. Ta ochrona żyje w jednej przeglądarce, w jednym profilu, na jednym urządzeniu i znika, gdy użytkownik przełączy się na inną aplikację. Filtr DNS skonfigurowany na bramie obejmuje każde urządzenie korzystające z resolvera bramy, także te, na których nie da się zainstalować żadnego rozszerzenia.

Żadne z rozwiązań nie jest kompletne samo w sobie. Filtr DNS nie usunie identyfikatora, który strona już wysłała, a rozszerzenie przeglądarki nie ochroni aplikacji, która nigdy go nie wczytuje.

Ścieżka resolvera decyduje, czy cokolwiek z tego działa

VPN może ogłaszać serwer DNS, a mimo to nie odbierać każdego zapytania. Przeglądarka ze skonfigurowanym szyfrowanym DNS, aplikacja z własnym resolverem albo urządzenie na ścieżce sieciowej omijającej bramę będą szukać gdzie indziej. Platformy mobilne coraz częściej oferują ustawienie prywatnego DNS, które po cichu nadpisuje to, co proponuje tunel.

Dlatego testuj ścieżkę, a nie politykę. Odpytaj zamierzony resolver bezpośrednio z bramy, potem odpytaj go z klienta i porównaj, a następnie sprawdź, czy nazwa, która powinna być zablokowana, faktycznie zawodzi w aplikacji używanej przez użytkownika.

Buforowane odpowiedzi i otwarte gniazda powodują szum. Strona, która już wczytała swoje zasoby, będzie działać dalej po zmianie reguły, więc świeże połączenie jest lepszym testem niż przeładowanie starej karty.

Sprawdź oba kierunki, zanim ogłosisz wynik

Użyj celowo zablokowanej nazwy dokumentacyjnej, dozwolonej nazwy publicznej i prywatnej nazwy potrzebnej usłudze:

$ dig +short metrics.example @10.40.0.53
$ dig +short example.com @10.40.0.53
$ dig +short intranet.corp.internal @10.40.0.53

Pusta odpowiedź dla nazwy zablokowanej, normalny adres dla publicznej i prywatny adres dla wewnętrznej razem pokazują, że filtrowanie, rozwiązywanie nadrzędne i rekordy lokalne działają. Jeśli wszystkie trzy zawiodą, patrzysz na problem z nadrzędnym serwerem albo nasłuchiwaczem, a nie na filtr.

Utrzymuj twierdzenie wąskie we wszystkim, co publikujesz wewnętrznie. To filtrowanie domen na resolverze, nie inspekcja treści, nie filtrowanie ścieżek i nie obietnica, że nikt nie jest śledzony. Podaj właściciela polityki, ścieżkę wyjątku i okres przechowywania zapytań obok reguł, bo filtr, który rejestruje każde zapytanie, ma własny koszt prywatności.

Powiązane artykuły