Jeśli serwer DNS wyszukuje rekord i go brakuje, często „negatywnie buforuje” fakt braku tego rekordu i nie spróbuje go jeszcze przez jakiś czas szukać. Nie widzę nic w RFC na temat TTL na temat negatywnego buforowania, więc domyślam się, że jest to trochę arbitralne. Jak długo w rzeczywistości utrzymują się te negatywne zapisy?
domain-name-system
Leopd
źródło
źródło
Odpowiedzi:
TTL dla buforowania ujemnego nie jest arbitralne. Jest pobierany z rekordu SOA na górze strefy, do której należałby żądany rekord, gdyby istniał. Na przykład:
Ostatnia wartość w rekordzie SOA („86400”) to czas, w którym klienci proszeni są o buforowanie wyników ujemnych
example.org.
.Jeśli klient zażąda
doesnotexist.example.org.
, będzie buforował wynik przez 86400 sekund.źródło
MIN(SOA TTL, SOA.MINIMUM)
nie tylkoSOA.MINIMUM
. (Zobacz tools.ietf.org/html/rfc2308#section-5 )Zależy to od dokładnej definicji „zapytania negatywnego”, ale w obu przypadkach jest to udokumentowane w rfc2308 «Negatywne buforowanie zapytań DNS (DNS NCACHE)» :
NXDOMAIN
NXDOMAIN
będzie odpowiedź, zostanie zapisanySOA
rekord, który zawieraNXDOMAIN
TTL (tradycyjnie zwanyMINIMUM
polem).rfc2308#section-4
SERVFAIL
Jeśli rozdzielczość nie powiedzie się i spowoduje
SERVFAIL
przekroczenie limitu czasu ( ) , może nie być w ogóle buforowana, aw żadnym wypadku NIE MOŻE być buforowana dłużej niż 5 minut.rfc2308#section-7.1
Pamiętaj, że w praktyce buforowanie takich wyników przez pełne dozwolone 5 minut to świetny sposób na zmniejszenie doświadczenia klienta w przypadku, gdy jego serwer pamięci podręcznej czasami doświadcza krótkich problemów z łącznością (i skutecznie czyni go łatwo podatnym na wzmocnienie Denial-of-Service, gdzie kilka sekund przestoju spowodowałoby wyłączenie niektórych części DNS przez pięć pełnych minut).
Przed wersją BIND 9.9.6-S1 (wydaną w 2014 r.) Najwyraźniej
SERVFAIL
w ogóle nie był buforowany.a878301
(2014-09-04)Na przykład w czasie Twojego pytania i we wszystkich wersjach BIND wydana przed 2014 r BIND rekurencyjnego rozpoznawania nazw nie cache
SERVFAIL
w ogóle, jeżeli powyższe popełnić i dokumentacja o pierwszym wprowadzeniu w 9.9.6-S1 wierzyć .W najnowszej wersji BIND wartością domyślną
servfail-ttl
jest1s
, a ustawienie jest ustalone na stałe do pułapu30s
(zamiast pułapu z mandatem RFC300s
).90174e6
(2015-10-17)Ponadto następujące godne uwagi cytaty na ten temat:
Podsumowując,
NXDOMAIN
odpowiedź zostanie zapisana w pamięci podręcznej, jak określono wSOA
odpowiedniej strefie, podczas gdySERVFAIL
jest mało prawdopodobne, że zostanie buforowana, lub, jeśli buforowana, będzie to co najwyżej dwucyfrowa liczba sekund.źródło
Istnieje RFC poświęcona temu tematowi: RFC 2308 - Negatywne buforowanie zapytań DNS (DNS NCACHE) .
Odpowiednia sekcja do przeczytania to 5 - Buforowanie negatywnych odpowiedzi, które stwierdza:
Po pierwsze pozwala zidentyfikować
SOA.MINIMUM
i SOA TTL opisane w RFC. TTL to liczba przed typem rekorduIN
(900
sekundy w poniższym przykładzie). Chociaż minimum to ostatnie pole w rekordzie (86400
sekundy w poniższym przykładzie).Teraz spójrzmy na kilka przykładów,
serverfault.com
strefa jest ilustrująca, ponieważ ma autorytatywne serwery od dwóch różnych dostawców, którzy są inaczej skonfigurowani.Znajdźmy autorytatywne serwery nazw dla
serverfault.com
strefy:Następnie sprawdź rekord SOA za pomocą serwera nazw aws:
Z tego wynika, że TTL rekordu SOA to
900
sekundy, a ujemna wartość TTL to86400
sekundy. Wartość TTL SOA900
jest niższa, więc spodziewamy się, że ta wartość zostanie zastosowana.Teraz, jeśli zapytamy autorytatywny serwer o nieistniejącą domenę, powinniśmy otrzymać odpowiedź bez odpowiedzi i z rekordem SOA w sekcji autorytetu:
Kiedy rekurencyjny (buforujący) przelicznik otrzyma tę odpowiedź, parsuje rekord SOA
AUTHORITY SECTION
i użyje TTL tego rekordu, aby określić, jak długo powinien buforować wynik ujemny (w tym przypadku900
sekundy).Teraz wykonajmy tę samą procedurę z serwerem nazw Google:
Możesz zobaczyć, że serwery nazw Google mają różne wartości zarówno dla TTL SOA, jak i dla ujemnych wartości TTL. W tym przypadku ujemna wartość TTL
300
jest niższa niż wartość TTL SOA wynosząca21600
. Dlatego serwer Google powinien użyć niższej wartości wAUTHORITY SECTION
rekordzie SOA podczas zwracaniaNXDOMAIN
odpowiedzi:Zgodnie z oczekiwaniami TTL rekordu SOA w
NXDOMAIN
odpowiedzi wynosi300
sekundy.Powyższy przykład pokazuje również, jak łatwo uzyskać różne odpowiedzi na to samo zapytanie. Odpowiedź, której używa pojedynczy program tłumaczący buforowanie, zależy od tego, do którego serwera zapytano autorytatywnego serwera nazw.
W moich testach zauważyłem również, że niektóre rekurencyjne (buforujące) przeliczniki nie zwracają
AUTHORITY SECTION
rekordu SOA z malejącym TTL dla kolejnych żądań, podczas gdy inne tak robią.Na przykład robi to przelicznik chmury (zwróć uwagę na malejącą wartość TTL):
Podczas gdy domyślny program rozpoznawania nazw w AWS VPC odpowie sekcją uprawnień tylko na pierwsze żądanie:
Uwaga: ta odpowiedź dotyczy zachowania
NXDOMAIN
odpowiedzi.Słownik:
źródło