Inicjatywa Dnia Flagi DNS 2020 mająca na celu rozwiązanie problemów z fragmentacją i obsługą protokołu TCP

Dzisiaj wielu dużych usług DNS i producentów serwerów DNS zorganizuje wspólne wydarzenie Dzień flagi DNS 2020zaprojektowany tak, aby skupiać uwagę decyzja problemy z fragmentacją IP podczas przetwarzania dużych wiadomości DNS. To już drugie tego typu wydarzenie, w zeszłym roku „Dzień Flagi DNS” był skupiony w sprawie prawidłowego przetwarzania wniosków EDNS.

Uczestnicy inicjatywy Dnia Flagi DNS 2020 wzywają do ustalenia zalecanych rozmiarów buforów dla EDNS na 1232 bajty (rozmiar MTU 1280 minus 48 bajtów na nagłówki), a także tłumaczyć przetwarzanie żądań za pośrednictwem protokołu TCP jest funkcją niezbędną na serwerach. W RFC 1035 Tylko obsługa przetwarzania żądań poprzez UDP jest oznaczona jako obowiązkowa, a protokół TCP jest wymieniony jako pożądany, ale nie wymagany do działania. Nowy RFC 7766 и RFC 5966 wyraźnie wymień protokół TCP jako funkcję wymaganą do prawidłowego działania systemu DNS. Inicjatywa proponuje wymuszenie przejścia z wysyłania żądań przez UDP na korzystanie z protokołu TCP w przypadkach, gdy ustalony rozmiar bufora EDNS jest niewystarczający.

Proponowane zmiany wyeliminują zamieszanie przy wyborze wielkości bufora EDNS oraz rozwiążą problem fragmentacji dużych komunikatów UDP, których przetwarzanie często prowadzi do utraty pakietów i przekroczeń limitu czasu po stronie klienta. Po stronie klienta rozmiar bufora EDNS będzie stały, a duże odpowiedzi będą natychmiast wysyłane do klienta przez protokół TCP. Unikanie wysyłania dużych wiadomości przez UDP rozwiąże również problemy z odrzucaniem dużych pakietów na niektórych zaporach ogniowych i umożliwi blokowanie ataki do zatruwania pamięci podręcznej DNS, polegającej na manipulacji pofragmentowanymi pakietami UDP (przy podzieleniu na fragmenty drugi fragment nie zawiera nagłówka z identyfikatorem, więc można go sfałszować, do czego wystarczy tylko zgodność sumy kontrolnej) .

Od dzisiaj uczestniczący dostawcy DNS, w tym CloudFlare, Quad 9, Cisco (OpenDNS) i Google, będzie się stopniowo zmieniać Rozmiar bufora EDNS od 4096 do 1232 bajtów na serwerach DNS (zmiana EDNS zostanie rozłożona na 4-6 tygodni i obejmie z czasem coraz większą liczbę żądań). Odpowiedzi na żądania UDP, które nie mieszczą się w nowym limicie, będą przesyłane za pośrednictwem protokołu TCP. Dostawcy serwerów DNS, w tym BIND, Unbound, Knot, NSD i PowerDNS, udostępnią aktualizacje zmieniające domyślny rozmiar bufora EDNS z 4096 bajtów na 1232 bajty.

Ostatecznie zmiany te mogą prowadzić do problemów z rozdzielczością podczas uzyskiwania dostępu do serwerów DNS, których odpowiedzi DNS UDP przekraczają 1232 bajty i nie mogą wysłać odpowiedzi TCP. Eksperyment przeprowadzony w Google pokazał, że zmiana rozmiaru bufora EDNS nie ma praktycznie żadnego wpływu na awaryjność - przy buforze 4096 bajtów liczba obciętych żądań UDP wynosi 0.345%, a liczba nieosiągalnych ponownych prób przez TCP wynosi 0.115%. Przy buforze 1232 bajtów wartości te wynoszą 0.367% i 0.116%. Uczynienie obsługi protokołu TCP wymaganą funkcją DNS spowoduje problemy z około 0.1% serwerów DNS. Należy zauważyć, że w nowoczesnych warunkach bez protokołu TCP działanie tych serwerów jest już niestabilne.

Administratorzy autorytatywnych serwerów DNS powinni upewnić się, że ich serwer odpowiada za pośrednictwem protokołu TCP na porcie sieciowym 53 i że ten port TCP nie jest blokowany przez zaporę sieciową. Renomowany serwer DNS nie powinien również wysyłać odpowiedzi UDP większych niż
żądany rozmiar bufora EDNS. Na samym serwerze rozmiar bufora EDNS powinien być ustawiony na 1232 bajty. Resolwery mają w przybliżeniu te same wymagania - obowiązkowa możliwość odpowiadania przez TCP, obowiązkowa obsługa wysyłania powtarzających się żądań przez TCP po otrzymaniu obciętej odpowiedzi UDP i ustawienie bufora EDNS na 1232 bajty.

Za ustawienie rozmiaru bufora EDNS na różnych serwerach DNS odpowiadają następujące parametry:

  • WIĄZAĆ

    opcje {
    edns-udp-rozmiar 1232;
    maksymalny rozmiar udp 1232;
    };

  • Węzeł DNS

    maksymalny ładunek udp: 1232

  • Narzędzie do rozwiązywania węzłów

    rozmiar.bufsieci(1232)

  • Autorytatywny PowerDNS

    próg obcięcia udp=1232

  • Rekursor PowerDNS

    edns-wychodzący-bufsize=1232
    próg obcięcia udp=1232

  • Rozwiązany

    rozmiar bufora edns: 1232

  • NSD

    ipv4-edns-rozmiar: 1232
    ipv6-edns-rozmiar: 1232

    Źródło: opennet.ru

  • Dodaj komentarz