Polecane serwery DNS - wyniki testu szybkości i ochrony
DNS (Domain Name System) to usługa odpowiedzialna za przypisywanie adresów IP i innych informacji domenom internetowym. Każda strona WWW posiada swój „identyfikator”, czyli wspomniany adres IP. W przypadku hostingu wiele stron współdzieli jeden adres. Posiadanie domeny i przypisanie jej do adresu IP serwera WWW nie jest wymagane do uruchomienia dostępnego publicznie serwisu, natomiast wchodzenie na stronę z użyciem adresu IP nie wygląda profesjonalnie. Adresy IP powiązane z daną domeną można poznać poprzez wyszukanie domeny np. w bazie Whois lub za pomocą polecenia ping w Windows (które wyświetli jedynie adres IP) czy komendy host w Linux.
UWAGA!
Zaktualizowaliśmy test serwerów DNS o nowych dostawców i nowe zagrożenia. Aktualna data testu to 10 września 2023 roku.
Zmiany od czasu ostatniego testu
W tym roku nie były sprawdzane serwery DNS.Watch (chociaż same serwery odpowiadają, to ich strona zwraca kod błędu 502, co może oznaczać ewentualne porzucenie projektu) i OpenNIC (dwa polskie serwery są niedostępne od dłuższego czasu).
Natomiast udało się przetestować nowy serwer dns0.eu, o którym pisaliśmy w artykule z 10 lutego 2023 r.
W procesie testowania nie było większych zmian, z wyjątkiem listy domen używanej w teście wydajności. Szczegóły zostały opisane poniżej.
Adresami IP serwerów DNS zajmuje się IANA i ICANN. W Polsce za rejestr domen i domenę .pl odpowiada Naukowa i Akademicka Sieć Komputerowa, czyli NASK. Sam DNS podczas przesyłania zapytań wykorzystuje protokół UDP, a działa w warstwie aplikacji modelu OSI, na domyślnym porcie 53. Zwykle mamy skonfigurowane dwa adresy IP różnych dostawców DNS-ów, co jest zabezpieczeniem w przypadku awarii jednego z nich.
„Szkielet Internetu” stanowią tzw. root servers. Ich lista dostępna jest na stronie https://root-servers.org/.
Istnieją różne rekordy DNS możliwe do ustawienia dla domeny. Najbardziej podstawowe z nich to:
- A — adres IPv4, na który wskazuje dana domena
- AAAA — adres IPv6, na który wskazuje dana domena
- CNAME — nazwa kanoniczna, często używana do wskazania różnych prefiksów domeny zamiast adresów IP (np. avlab.pl może być wartością rekordu CNAME dla www.avlab.pl)
- MX — adres serwera obsługującego pocztę
- TXT — różne dodatkowe informacje (np. kod weryfikacyjny Google Workspace), wykorzystywany także do walidacji “własności” domeny przy zakupie certyfikatów SSL oraz do konfiguracji SPF
Routery dostarczone przez dostawcę usług internetowych często są konfigurowane do korzystania z serwerów DNS w sieci operatora. Zwykle warto zmienić to ustawienie na serwery DNS należące do globalnych operatorów, ponieważ z reguły są wydajniejsze i bezpieczniejsze od tych oferowanych przez dostawców Internetu. Niektóre z nich (wymienione poniżej) zawierają też dodatkowe funkcjonalności w postaci blokowania złośliwych domen lub tych z treściami dla dorosłych.
Porównanie serwerów DNS
Tabelka dotycząca porównania serwerów DNS: nazwa operatora, adresy IP, kraj operatora, filtrowanie kategorii, wsparcie dla DoH (DNS over HTTPS).
Nazwa usługi serwerów DNS | Adresy IP | Kraj operatora (jurysdykcja) | Filtrowanie kategorii np. pornografia i reklamy | Ochrona przed malware i phishingem | Wsparcie dla DNS over HTTPS (DoH) |
Cloudflare | 1.1.1.1 i 1.1.1.2, 1.0.0.2 (blokowanie malware), 1.1.1.3 i 1.0.0.3 (blokowanie malware i treści dla dorosłych) | USA | NIE | TAK | TAK |
Google Public DNS | 8.8.8.8 i 8.8.4.4 | USA | NIE | NIE | TAK |
Quad9 | 9.9.9.9 | Szwajcaria | NIE | TAK | TAK |
Comodo Secure DNS | 8.26.56.26 i 8.20.247.40 | USA | NIE | TAK | NIE |
CleanBrowsing | 185.228.168.168 i 185.228.169.168 | USA | TAK | TAK | TAK |
Alternate DNS | 76.76.19.19 i 76.223.122.150 | USA | TAK | TAK | TAK |
AdGuard DNS | 176.103.130.130 i 176.103.130.131 | USA | TAK | TAK | TAK |
NextDNS | 45.90.28.141 i 45.90.30.141 | USA | TAK | TAK | TAK |
dns0.eu | 193.110.81.0 i 185.253.5.0, 193.110.81.9 i 185.253.5.9 (blokowanie malware), 193.110.81.1 i 185.253.5.1 (blokowanie treści dla dorosłych) | Francja | TAK | TAK | TAK |
Komentarz do tabeli:
Praktycznie wszystkie serwery DNS znajdują się z jurysdykcją w USA. Jedynie pięciu dostawców zapewnia jednocześnie filtrowanie kategorii i ochronę przed złośliwymi (w ogólnym znaczeniu) stronami. Cieszy fakt, że zdecydowana większość serwerów wspiera DNS over HTTPS (DoH), czyli szyfrowanie zapytań.
Konfiguracja adresów DNS
Zmianę adresów DNS dokonujemy na pojedynczym urządzeniu lub na wszystkich (w ustawieniach routera). Ma do duże znaczenie. W przypadku modyfikacji adresów np. na laptopie sprawimy, że tylko to pojedyncze urządzenie będzie komunikowało się ze światem za pośrednictwem ustawionych serwerów. Pozostałe urządzenia w sieci będą rozwiązywały domeny na adresy IP za pośrednictwem serwerów DNS ustawionych w routerze. Należy pamiętać, że systemowe DNS mają „pierwszeństwo” przed tymi w konfiguracji routera.
W przypadku zmiany adresów DNS w konfiguracji routera sprawa wygląda paradoksalnie łatwiej. Należy jednak pamiętać, że pozostałych ustawień lepiej nie modyfikować, jeśli się nie wie, do czego służą. W przeglądarce wchodzimy pod adres (najczęściej) 192.168.0.1 lub 192.168.1.1, czy też inny, w zależności od struktury sieci i producenta routera.
Zazwyczaj ustawienia DNS są połączone z ustawieniami DHCP (Dynamic Host Configuration Protocol), co odpowiada za automatyczne przydzielanie urządzeniom w sieci informacji o niej, m.in. adres IP, maska czy adres bramy domyślnej i DNS.
W jaki sposób poznać adres routera?
Metod jest kilka, a te zależą w głównej mierze od systemu:
- Windows: Uruchamiamy wiersz polecenia (z poziomu Menu Start, wyszukując “cmd”, lub skrótem Win+R i wpisując “cmd”). Następnie wpisujemy „ipconfig” i szukamy pozycji Default Gateway. Widoczny adres to adres routera. To zdecydowanie najszybszy sposób, bo w domowej sieci raczej DHCP przydziela konfigurację, a niewiele osób ustawia ją statycznie (co ma uzasadnienie w przypadku serwerów i drukarek w sieci). Jeśli posiadamy sprzęt od MikroTik, to polecam wykorzystać WinBox, który w zakładce Neighbours wyświetla urządzenia tej firmy w naszej sieci.
- Linux: W terminalu wystarczy wpisać “ip r”, szukanym adresem jest ten po frazie “default via …”.
- Android: Adres routera jest widoczny w ustawieniach konkretnej sieci WiFi. Nie polecam jednak zmieniać konfiguracji z poziomu mobilnych przeglądarek z powodu ograniczonej wygody (nie każdy panel jest przystosowany do mniejszych ekranów). Lepiej pobrać dedykowaną aplikację z oficjalnego sklepu i z niej korzystać, bo umożliwia szybki dostęp do najważniejszych ustawień.
Test szybkości serwerów DNS
Do przetestowania szybkości serwerów DNS użyłem narzędzia dnsperf, które pobierało domeny z listy top 1000 od Cloudflare Radar. Następnie automatycznie odpytywało po kolei wskazane serwery DNS adresami z tej listy. Ograniczyłem dodatkowo ilość zapytań na sekundę do 10, co było spowodowane konfiguracją niektórych serwerów — odrzucały wszelkie zapytania powyżej tego limitu.
W poprzednich edycjach tego testu używana była lista Alexa. Obecnie nie jest jednak aktualna (część domen w niej zawartych już zresztą wygasła), przez co w tym roku nie mogła zostać wykorzystana.
dnsperf wymaga listy w formacie <domena> <rekord_DNS>. Lista od Cloudflare Radar zawiera wyłącznie nazwy domen, natomiast poniższym poleceniem sed można było łatwo dopisać “A” do 1000 linii w tym pliku:
sed -i 's/$/ A/' domeny.txt
Tabela zawiera wyniki (w milisekundach, więc Average Latency wypisane w sekundach przez dnsperf należało pomnożyć 1000 razy) średniego czasu odpowiedzi od domen zapisanych w pliku.
Im mniejsza wartość, tym odpowiedź serwera jest szybsza (milisekundy).
Nazwa usługi serwerów DNS | Test o 8 rano | Test o 14 po południu | Test o 20 wieczorem | Test kolejnego dnia o 8 rano | Średni wynik |
Cloudflare | 30 | 25.7 | 31.4 | 27.8 | 28.72 |
Google Public DNS | 34.6 | 37.2 | 43.2 | 35 | 37.5 |
Quad9 | 78.9 | 77.7 | 80.1 | 81.9 | 79.65 |
Comodo Secure DNS | 61.8 | 73.2 | 75.0 | 56.2 | 66.55 |
CleanBrowsing | 69.2 | 52.1 | 49.9 | 50.1 | 55.32 |
Alternate DNS | 219.3 | 436.2 | 261.1 | 414.8 | 332.85 |
AdGuard DNS | 151.3 | 165.2 | 168.3 | 381.4 | 216.55 |
NextDNS | 81.6 | 77.1 | 75.3 | 78.9 | 78.22 |
dns0.eu | 68.3 | 74.5 | 65.3 | 65.9 | 68.5 |
Komentarz do tabeli:
Najszybsze czasy odpowiedzi za każdym razem uzyskiwał serwer DNS operowany przez Cloudflare. Całkiem podobną wydajność zapewnia serwer Google. Najgorzej w tym zestawieniu wypadają serwery Alternate DNS i AdGuard DNS, gdzie wyniki zdecydowanie odbiegają od reszty testowanych rozwiązań. Pozostałe serwery zachowują porównywalny poziom czasu odpowiedzi.
Test ochrony przed phishingiem (100 adresów dziennie)
W testach ochrony przez phishingiem i malware korzystałem odpowiednio z list PhishTank oraz URLhaus. Do odczytu przygotowanych list używane było polecenie wget. Potrzebowałem do tego zwykłego pliku TXT, gdzie w kolejnych liniach zapisane były pełne adresy URL.
Listę PhishTank można było wyjątkowo łatwo przygotować do tych wymagań. Zawiera ona wyłącznie domeny (żadnych adresów IP) w drugiej “kolumnie”, którą poleceniem awk wystarczyło przekierować do pliku, a potem z użyciem sed usunąć pierwszą linię zawierającą nazwę kolumny — url.
Z kolei w przypadku listy URLhaus konieczne były pewne dodatkowe czynności. Oprócz tego, że zawiera adresy IP, to zdarzają się na niej powtórzenia domen. Do usunięcia adresów IP używałem opcji Zamień… w Notepad++ z trybem szukania ustawionym na Wyrażenia regularne. Pozostawały wtedy puste linie, które jednak usuwałem za pomocą sed (w samym Notepad++ też byłaby możliwość). Ewentualne powtórzenia usuwałem kombinacją poleceń sort i uniq, a na koniec przekierowywałem już do właściwego pliku output polecenia head -100 domeny.txt.
Od liczby 100 odejmowałem ilość pobranych plików poleceniem wget i w ten sposób uzyskiwałem ilość zablokowanych zapytań.
Zablokowane adresy (NXDOMAIN [*]) | Cloudflare | Quad9 | Comodo Secure DNS | CleanBrowsing | Alternate DNS | AdGuard DNS | NextDNS | dns0.eu |
Dzień 1 | 75 | 45 | 29 | 55 | 28 | 40 | 30 | 89 |
Dzień 2 | 66 | 74 | 28 | 96 | 29 | 66 | 28 | 78 |
Dzień 3 | 47 | 61 | 32 | 93 | 12 | 18 | 12 | 61 |
[*] Tak zwany błąd NXDOMAIN oznacza, że w bazie DNS konkretnego operatora domena nie jest powiązana z adresem IP, czyli użytkownik końcowy nie widzi odpowiedzi od danej strony.
Test ochrony przed malware (100 adresów dziennie)
Zablokowane adresy (NXDOMAIN [*]) | Cloudflare | Quad9 | Comodo Secure DNS | CleanBrowsing | Alternate DNS | AdGuard DNS | NextDNS | dns0.eu |
Dzień 1 | 87 | 92 | 25 | 90 | 17 | 16 | 25 | 100 |
Dzień 2 | 86 | 92 | 31 | 86 | 20 | 19 | 32 | 100 |
Dzień 3 | 87 | 89 | 50 | 86 | 16 | 18 | 28 | 100 |
[*] Tak zwany błąd NXDOMAIN oznacza, że w bazie DNS konkretnego operatora domena nie jest powiązana z adresem IP, czyli użytkownik końcowy nie widzi odpowiedzi od danej strony.
Serwer DNS to ważny aspekt naszego bezpieczeństwa
Wszystkie urządzenia wysyłają i odbierają jakieś dane. Użytkownik odwiedza daną stronę w przeglądarce, zainstalowana aplikacja odpytuje swoje serwery o aktualizacje itp. Serwer DNS może ochronić przed różnymi złośliwymi działaniami. Należy jednak pamiętać, że malware nie znajduje się jedynie w Internecie, bo równie dobrze możemy zainfekować system, uruchamiając złośliwe makra, nieznany program. Zagrożeniem jest też podłączenie nieznanego pendrive.
DNS nie chroni przed popularnymi atakami występującymi w sieci (MITM, podsłuchanie komunikacji, ARP spoofing). Nie możemy też liczyć na ochronę kamery internetowej czy pliku hosts. Swoją drogą mało osób o tym wspomina, ale ten prosty plik ma ogromny wpływ na bezpieczeństwo. Podmiana pliku HOSTS przez malware może mieć tragiczne konsekwencje:
[adres_IP_atakujacego] mbank.pl
Od teraz zamiast na stronie mBanku, po wejściu na https://mbank.pl będziemy na witrynie należącej do atakującego! Jeśli jest dobrze przygotowana, to raczej nie mamy szans na zauważenie ataku (chociaż można porównać tzw. odcisk palca certyfikatu, ale raczej nikt nie porównuje tego za każdym razem). W pasku adresu widoczny jest mbank.pl, a w praktyce jesteśmy połączeni z serwerem przestępcy.
Czy ten artykuł był pomocny?
Oceniono: 82 razy