Usługi przesyłania dalej i warunkowe limity czasu rozwiązywania problemów
W tym artykule opisano zachowanie rezerwowe i przekroczenie limitu czasu, które istnieje, gdy co najmniej jeden adres IP serwerów DNS jest skonfigurowany jako usług przesyłania dalej lub usług przesyłania dalej warunkowego na serwerze DNS.
Oryginalny numer KB: 2834250
Podsumowanie
Podobnie jak w przypadku klientów DNS, konfigurowanie serwerów DNS z więcej niż jednym usługą przesyłania dalej lub usługą przesyłania warunkowego dodaje dodatkową odporność na uszkodzenia infrastruktury DNS. Dodanie wielu serwerów DNS jako usług przesyłania dalej lub usług przesyłania dalej warunkowego umożliwia rozpoznawanie nazw DNS w przypadku awarii tylko skonfigurowanego serwera, podstawowego łącza sieciowego lub pomocniczej infrastruktury sieciowej.
Jednak dodanie odporności na uszkodzenia na serwerach jest jeszcze bardziej krytyczne, ponieważ istnieje potencjalnie przechodnia operacja wykonywana przez jakiś serwer w imieniu liczby klientów, którzy teraz zawieszają się. Zasoby są następnie używane przyrostowo przez dłuższy czas.
Upewnij się, że parametry są poprawnie dostrojone, jeśli chcesz użyć co najmniej trzech usług przesyłania dalej/usług przesyłania dalej warunkowego, ponieważ ustawienia domyślne mogą nie być zoptymalizowane pod kątem tej dużej ilości serwerów.
Jakie jest domyślne zachowanie serwera DNS, gdy więcej niż dwa serwery DNS są skonfigurowane jako usługi przesyłania dalej
Aby zrozumieć, jak to działa, kluczowe zmienne to:
RecursionTimeout — jak długo system nazw domen (DNS) czeka na serwery zdalne odpowiedzi na zapytanie klienta rekursywnego przed zakończeniem wyszukiwania.
Jest on zapisywany w rejestrze w obszarze
HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeout
i można go konfigurować za pomocą poleceniadnscmd /config /RecursionTimeout <value>
. Można to zweryfikować za pomocą polecenia cmdletGet-DnsServerRecursion
programu PowerShell .Wartość domyślna to 8 sekund w systemach Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 i Windows Server 2022.
Parametr RecursionTimeout jest definiowany na poziomie serwera DNS i jest niezależny od określonej strefy, do których wykonuje zapytanie.
ForwardingTimeout — jak długo system nazw domen (DNS) czeka na każdy serwer na liście w usługach przesyłania dalej, aby odpowiedzieć na zapytanie.
Jest on zapisywany w rejestrze w obszarze
HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\ForwardingTimeout
i konfigurowalny za pomocą poleceniadnscmd /config /ForwardingTimeout <value>
. Można to również zweryfikować za pomocą polecenia cmdletGet-DnsServerForwarder
programu PowerShell .Wartość domyślna to 3 sekundy w systemach Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 i Windows Server 2022.
Parametr ForwardingTimeout jest definiowany na poziomie serwera DNS i jest niezależny od określonej strefy, do których jest wysyłana kwerenda.
Gdy serwer DNS odbiera zapytanie dotyczące rekordu w strefie, dla której nie jest autorytatywny i musi używać usług przesyłania dalej, domyślne zachowanie jest następujące:
Czas (sekundy od uruchomienia) | Akcja |
---|---|
0 | Klient wysyła zapytanie do serwera DNS. Serwer DNS natychmiast przekazuje zapytanie do pierwszego usługi przesyłania dalej. |
<forwarding_timeout> | Po <forwarding_timeout> sekundach, jeśli pierwszy usług przesyłania dalej nie odpowiedział, serwer DNS wysyła zapytanie do drugiego usługi przesyłania dalej. |
2 * <forwarding_timeout> +1 | Po <forwarding_timeout> +1 więcej sekund, jeśli drugi usług przesyłania dalej nie odpowiedział, serwer DNS wysyła zapytanie do trzeciego usługi przesyłania dalej. |
... | ... |
N * <forwarding_timeout> +(N-1) | Po <forwarding_timeout> + 1 więcej sekund, jeśli nth przesyłania dalej nie odpowiedział, serwer DNS wysyła zapytanie do (N+1)th przesyłania dalej. |
Uwaga 16.
Oprócz skonfigurowanego opóźnienia może istnieć dodatkowe opóźnienie połowy sekundy z powodu obciążenia systemu.
Algorytm zatrzymuje się, gdy czas, który upłynął, przekroczył wartość RecursionTimeout
Jeśli recursionTimeout wygaśnie, serwer DNS odpowie klientowi z powodu błędu serwera.
Uwaga 16.
Nie wysyłamy błędu serwera natychmiast po wygaśnięciu rekursjiTimeout , ale tylko wtedy, gdy nadszedł czas na wypróbowanie następnego usługi przesyłania dalej.
Jeśli serwer zarządza skontaktować się ze wszystkimi usługami przesyłania dalej przed wygaśnięciem rekursjiTimeout bez uzyskiwania odpowiedzi, spróbuje użyć wskazówek głównych dotyczących rozpoznawania nazw (ustawienie domyślne, chyba że rekursja została wyłączona na poziomie serwera).
Oznacza to, że w przypadku ustawień domyślnych serwer DNS systemu Windows będzie mógł wykonywać zapytania dotyczące co najwyżej trzech usług przesyłania dalej. Nie będzie wystarczająco dużo czasu, aby dotrzeć do korzystania z czwartego przesyłania dalej. W rzeczywistości z ustawieniami domyślnymi serwer DNS systemu Windows będzie:
- Wykonywanie zapytań względem pierwszego usługi przesyłania dalej po 0 sekundach
- Wykonywanie zapytań względem drugiego usługi przesyłania dalej po 3,5 sekundy
- Wykonaj zapytanie dotyczące trzeciego usługi przesyłania dalej po 3,5 + 4 = 7,5 sekundy
W ósmym drugim, RecursionTimeout wygasa, więc nie osiągniemy punktu, w którym zostanie zapytany czwarty przesyłania dalej (co mogłoby się zdarzyć po 3,5 + 4 + 4 = 11,5 sekundy).
Wyślemy odpowiedź na błąd serwera, a następnie po 11,5 sekundy.
Przykład:
Serwer DNS z adresem IP 192.168.0.1 jest skonfigurowany z pięcioma usługami przesyłania dalej (10.0.0.1-10.0.0.5).
Klient ma adres IP 10.0.0.31 i wykonuje zapytanie o adres Microsoft.com
.
W przechwyceniu sieci zobaczymy następujące dane wyjściowe monitora sieciowego (uwaga: 10.0.0.4 i 10.0.0.5 nigdy nie są odpytywane):
Czas przesunięcia czasuUsuń szczegóły lokalizacji docelowej źródła
6:33:51.7507293 0.2731738 0.0000000 10.0.0.31 192.168.0.1 DNS:QueryId = 0xF03, QUERY (zapytanie standardowe), zapytanie omicrosoft.com
typ dodatku hosta w klasie Internet
6:33:51.7510021 0.2734466 0.0002728 192.168.0.1 10.0.0.1 DNS:QueryId = 0xBD57, QUERY (zapytanie standardowe), zapytanie omicrosoft.com
typ dodatku hosta w klasie Internet
6:33:55.2997074 3.8221519 3.5487053 192.168.0.1 10.0.0.2 DNS:QueryId = 0xBD57, ZAPYTANIE (zapytanie standardowe), Zapytanie omicrosoft.com
typ Dodatku hosta w klasie Internet
6:33:59.2931644 7.8156089 3.9934570 192.168.0.1 10.0.0.0.3 DNS:QueryId = 0xBD57, ZAPYTANIE (zapytanie standardowe), Zapytanie omicrosoft.com
typ Dodatku hosta w klasie Internet
6:34:03.3112753 11.8337198 4.0181109 192.168.0.1 10.0.0.0.31 DNS:QueryId = 0xF03, ZAPYTANIE (zapytanie standardowe), Odpowiedź — błąd serwera
Jakie jest domyślne zachowanie serwera DNS, gdy więcej niż dwa serwery DNS są skonfigurowane jako warunkowe usługi przesyłania dalej
Podobnie jak w przypadku usług przesyłania dalej, istnieją dwie kluczowe zmienne dla usług przesyłania dalej warunkowego. Nadal mamy wartość RecursionTimeout (która działa na poziomie serwera), ale w tym scenariuszu używamy elementu ForwarderTimeout zamiast funkcji ForwarderTimeout . W szczególności należy pamiętać, że usługa ForwarderTimeout działa w strefie i ma różne wartości domyślne:
RecursionTimeout — jak długo system nazw domen (DNS) czeka na serwery zdalne odpowiedzi na zapytanie klienta rekursywnego przed zakończeniem wyszukiwania.
Jest on zapisywany w rejestrze w obszarze
HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeout
.Można go konfigurować za pomocą polecenia
dnscmd /config /RecursionTimeout <value>
.Wartość domyślna to 8 sekund w systemach Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 i Windows Server 2022.
Parametr RecursionTimeout jest definiowany na poziomie serwera DNS i jest niezależny od określonej strefy, do których wykonuje zapytanie.
ForwarderTimeout — jak długo system nazw domen (DNS) czeka na każdy serwer na liście usług przesyłania dalej warunkowego, aby odpowiedzieć na zapytanie.
Ponieważ usługi przesyłania dalej warunkowego są skonfigurowane dla określonych stref, usługa ForwarderTimeout jest również zależna od strefy.
Jest on zapisywany w rejestrze w obszarze
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server\Zones\ <zone_name>\ForwarderTimeout
.Wartość domyślna to 5 sekund w systemach Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 i Windows Server 2022.
Jest to również ustawienie widoczne w graficznym interfejsie użytkownika usługi przesyłania dalej warunkowego.
Gdy serwer DNS odbiera zapytanie dotyczące rekordu w strefie, dla której nie jest autorytatywny, i jest skonfigurowany do używania dla niego usług przesyłania dalej warunkowego, domyślne zachowanie jest następujące:
Czas (sekundy od uruchomienia) | Akcja |
---|---|
0 | Klient wysyła zapytanie do serwera DNS. Serwer DNS natychmiast przekazuje zapytanie do pierwszego warunkowego usługi przesyłania dalej. |
<forwarder_timeout> | Po <forwarder_timeout> sekundach, jeśli pierwszy warunkowy usług przesyłania dalej nie odpowiedział, serwer DNS wysyła zapytanie do drugiego warunkowego przesyłania dalej. |
2 * <forwarder_timeout> +1 | Po <forwarder_timeout> +1 więcej sekund, jeśli drugi warunkowy usług przesyłania dalej nie odpowiedział, serwer DNS wysyła zapytanie do trzeciego usługi przesyłania dalej warunkowego. |
... | ... |
N * <forwarder_timeout> +(N-1) | Po <forwarder_timeout> +1 więcej sekund, jeśli Nth warunkowego przesyłania dalej nie odpowiedział, serwer DNS wysyła zapytanie do (N+1)th warunkowego przesyłania dalej. |
Uwaga 16.
Oprócz skonfigurowanego opóźnienia może istnieć dodatkowe opóźnienie połowy sekundy z powodu obciążenia systemu.
Algorytm zatrzymuje się, gdy czas, który upłynął, przekroczył wartość RecursionTimeout
Jeśli recursionTimeout wygaśnie, serwer DNS odpowie klientowi z powodu błędu serwera.
Uwaga 16.
Nie wysyłamy błędu serwera natychmiast po wygaśnięciu recursionTimeout , ale tylko wtedy, gdy jest to czas na wypróbowanie następnego warunkowego przesyłania dalej.
Oznacza to, że w przypadku ustawień domyślnych serwer DNS systemu Windows będzie mógł wykonywać zapytania dotyczące co najwyżej dwóch usług przesyłania dalej warunkowego. Nie będzie wystarczająco dużo czasu, aby użyć trzeciego usługi przesyłania dalej warunkowego. W rzeczywistości z ustawieniami domyślnymi serwer DNS systemu Windows będzie:
- Wykonywanie zapytań względem pierwszego usługi przesyłania dalej po 0 sekundach
- Wykonywanie zapytań względem drugiego usługi przesyłania dalej po 5,5 sekundach
Po ósmej sekundzie wartość RecursionTimeout wygaśnie, więc nie osiągniemy punktu, w którym zostanie wykonane zapytanie dotyczące trzeciego warunkowego usługi przesyłania dalej (co miałoby miejsce po 5,5 + 6 = 11,5 sekundy).
Wyślemy odpowiedź na błąd serwera, a następnie po 11,5 sekundy.
Przykład:
Serwer DNS z adresem IP 192.168.0.1 jest skonfigurowany z pięcioma usługami przesyłania dalej warunkowego (10.0.0.1-10.0.0.5) dla strefy Microsoft.com
.
Klient ma adres IP 10.0.0.31 i wykonuje zapytanie o adres Microsoft.com
.
W przechwyceniu sieci zobaczymy następujące dane wyjściowe monitora sieciowego (uwaga 10.0.0.3, 10.0.0.4 i 10.0.0.5 nigdy nie wysyłano zapytań):
Czas przesunięcia czasuUsuń szczegóły lokalizacji docelowej źródła
6:50:32.5481816 0.4306857 0.00000000 10.0.0.33 192.168.0.1 DNS:QueryId = 0x245A, ZAPYTANIE (zapytanie standardowe), Zapytanie omicrosoft.com
typ Dodatku hosta w klasie Internet
6:50:32.5484341 0.4309382 0.0002525 192.168.0.1 10.0.0.1 DNS:QueryId = 0x252B, QUERY (zapytanie standardowe), zapytanie omicrosoft.com
typ Dodatku hosta w klasie Internet
6:50:38.1695163 6.0520204 5.6210822 192.168.0.1 10.0.0.2 DNS:QueryId = 0x252B, ZAPYTANIE (zapytanie standardowe), Zapytanie omicrosoft.com
typ dodatku hosta w klasie Internet
6:50:44.1856567 12.0681608 6.0161404 192.168.0.1 10.0.0.33 DNS:QueryId = 0x245A, ZAPYTANIE (zapytanie standardowe), Odpowiedź — błąd serwera