Aracılığıyla paylaş


İleticiler ve koşullu ileticiler çözümleme zaman aşımları

Bu makalede, dns sunucusunda bir veya daha fazla DNS Sunucusu IP'si iletici veya koşullu iletici olarak yapılandırıldığında var olan geri dönüş ve zaman aşımı davranışı açıklanmaktadır.

Özgün KB numarası: 2834250

Özet

DNS istemcilerine benzer şekilde, DNS sunucularını birden fazla İletici veya Koşullu İletici ile yapılandırmak, DNS altyapınıza ek hataya dayanıklılık sağlar. birden çok DNS Sunucusunu İleticiler veya Koşullu İleticiler olarak eklemek, dns adlarının, temel alınan ağ bağlantısının veya destekleyici ağ altyapısının yapılandırılan tek Sunucunun hataları durumunda çözümlenmeye devam etmesine olanak tanır.

Ancak, sunucularda hataya dayanıklılık eklemek daha da kritiktir çünkü bazı sunucunun şu anda asılı olan istemcilerin çoğulluğu adına yaptığı geçişli bir işlem olabilir. Kaynaklar daha sonra artımlı olarak daha uzun süreler için tüketiliyor.

Varsayılan ayarlar bu yüksek miktarda sunucu için iyileştirilmeyebileceği için üç veya daha fazla iletici/koşullu iletici kullanmak istiyorsanız parametreleri doğru şekilde ayarladığınızdan emin olun.

İkiden fazla DNS sunucusu iletici olarak yapılandırıldığında DNS sunucusunun varsayılan davranışı nedir?

Bunun nasıl çalıştığını anlamak için anahtar değişkenler şunlardır:

  • RecursionTimeout - Etki Alanı Adı Sistemi'nin (DNS) aramayı sonlandırmadan önce uzak sunucuların özyinelemeli bir istemci sorgusuna yanıt vermesini ne kadar beklediği.

    kayıt defterine altında HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeoutkaydedilir ve aracılığıyla dnscmd /config /RecursionTimeout <value>yapılandırılabilir. Bu, PowerShell cmdlet'i Get-DnsServerRecursionaracılığıyla doğrulanabilir.

    Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 ve Windows Server 2022'de varsayılan değer 8 saniyedir.

    RecursionTimeout, DNS sunucusu düzeyinde tanımlanır ve sorgulanan belirli bölgeden bağımsızdır.

  • ForwardingTimeout - Etki Alanı Adı Sistemi'nin (DNS) İleticiler'deki listedeki her sunucunun bir sorguya yanıt vermesini ne kadar beklediği.

    altındaki HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\ForwardingTimeout kayıt defterine kaydedilir ve aracılığıyla dnscmd /config /ForwardingTimeout <value>yapılandırılabilir. Bu, PowerShell cmdlet'i Get-DnsServerForwarderaracılığıyla da doğrulanabilir.

    Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 ve Windows Server 2022'de varsayılan değer 3 saniyedir.

    ForwardingTimeout, DNS sunucusu düzeyinde tanımlanır ve sorgulanan belirli bölgeden bağımsızdır.

DNS sunucusu, yetkili olmadığı bir bölgedeki bir kayıt için sorgu aldığında ve ileticileri kullanması gerektiğinde, varsayılan davranış aşağıdaki gibidir:

Süre (başlangıçtan bu yana saniye) Eylem
0 İstemci, DNS sunucusunu sorgular. DNS sunucusu sorguyu hemen ilk ileticisine iletir.
<forwarding_timeout> forwarding_timeout> saniye sonra<, ilk iletici yanıt vermediyse, DNS sunucusu ikinci ileticiyi sorgular.
2 * <forwarding_timeout> +1 <forwarding_timeout> +1 saniye sonra, ikinci iletici yanıt vermediyse, DNS sunucusu üçüncü ileticiyi sorgular.
... ...
N * <forwarding_timeout> +(N-1) <forwarding_timeout> + 1 saniye sonra, N. iletici yanıt vermediyse, DNS sunucusu (N+1) ileticisini sorgular.

Not

Yapılandırılan gecikmeye ek olarak, sistem yükünden dolayı ek yarım saniyelik bir gecikme olabilir.

Geçen süre RecursionTimeout değerini aştığında algoritma durdurulur

RecursionTimeout'un süresi dolarsa, DNS sunucusu istemciye sunucu hatasıyla yanıt verir.

Not

Sunucu Hatasını RecursionTimeout süre sonundan hemen sonra değil, yalnızca sonraki ileticiyi deneme zamanı geldiğinde göndeririz.

Sunucu, Yanıt almadan RecursionTimeout süresi dolmadan önce tüm ileticilerle iletişim kurmayı başarırsa, ad çözümlemesi için kök ipuçlarını kullanmayı dener (özyineleme sunucu düzeyinde devre dışı bırakılmadığı sürece varsayılan ayar).

Bu, varsayılan ayarlarla bir Windows DNS sunucusunun en fazla üç ileticiyi sorgulayabildiği anlamına gelir. Dördüncü ileticiyi kullanmak için yeterli zaman olmayacaktır. Aslında, varsayılan ayarlarla Windows DNS sunucusu şunları yapacaktır:

  • 0 saniye sonra ilk ileticiyi sorgulama
  • 3,5 saniye sonra ikinci ileticiyi sorgulama
  • 3,5 + 4 = 7,5 saniye sonra üçüncü ileticiyi sorgulama

Sekizinci saniyede RecursionTimeout'un süresi dolduğundan dördüncü ileticinin sorgulandığı noktaya ulaşmayacağız (3,5 + 4 + 4 = 11,5 saniye sonra olurdu).

Sunucu Hatası yanıtını 11,5 saniye sonra göndereceğiz.

Örnek:

IP adresi 192.168.0.1 olan DNS sunucusu beş iletici (10.0.0.1-10.0.0.5) ile yapılandırılır.

İstemci 10.0.0.31 IP adresine sahiptir ve için Microsoft.comsorgular.

Ağ yakalamada aşağıdaki Ağ İzleyicisi çıkışını görebiliriz (not 10.0.0.4 ve 10.0.0.5 hiç sorgulanmamıştır):

Time Time Offset TimeDelta Kaynak Hedef Ayrıntıları
6:33:51.7507293 0.2731738 0.0000000 10.0.0.31 192.168.0.1 DNS:QueryId = 0xF03, QUERY (Standart sorgu), İnternet'te Konak Eklentisi türü için microsoft.com sorgu
6:33:51.7510021 0.2734466 0.0002728 192.168.0.1 10.0.0.1 DNS:QueryId = 0xBD57, QUERY (Standart sorgu), İnternet'te Konak Eklentisi türü için microsoft.com sorgu
6:33:55.2997074 3.8221519 3.5487053 192.168.0.1 10.0.0.2 DNS:QueryId = 0xBD57, QUERY (Standart sorgu), İnternet'te Konak Eklentisi türü için microsoft.com sorgu
6:33:59.2931644 7.8156089 3.9934570 192.168.0.1 10.0.0.3 DNS:QueryId = 0xBD57, QUERY (Standart sorgu), İnternet'te Konak Eklentisi türü için microsoft.com sorgu
6:34:03.3112753 11.8337198 4.0181109 192.168.0.1 10.0.0.31 DNS:QueryId = 0xF03, QUERY (Standart sorgu), Yanıt - Sunucu hatası

İkiden fazla DNS sunucusu koşullu iletici olarak yapılandırıldığında dns sunucusunun varsayılan davranışı nedir?

İleticilere benzer şekilde, Koşullu İleticiler için iki anahtar değişken vardır. RecursionTimeout (sunucu düzeyinde çalışıyor) var ancak bu senaryoda ForwardingTimeout yerine ForwarderTimeout kullanıyoruz. ForwarderTimeout'un bölge bazında çalıştığını ve farklı varsayılan değerlere sahip olduğunu özellikle unutmayın:

  • RecursionTimeout - Etki Alanı Adı Sistemi'nin (DNS) aramayı sonlandırmadan önce uzak sunucuların özyinelemeli bir istemci sorgusuna yanıt vermesini ne kadar beklediği.

    altındaki kayıt defterine HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeoutkaydedilir.

    aracılığıyla dnscmd /config /RecursionTimeout <value>yapılandırılabilir.

    Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 ve Windows Server 2022'de varsayılan değer 8 saniyedir.

    RecursionTimeout, DNS sunucusu düzeyinde tanımlanır ve sorgulanan belirli bölgeden bağımsızdır.

  • ForwarderTimeout - Etki Alanı Adı Sistemi'nin (DNS) Koşullu İleticiler listesindeki her sunucunun bir sorguya yanıt vermesini ne kadar süreyle beklediği.

    Koşullu İleticiler belirli bölgeler için yapılandırıldığından ForwarderTimeout da bölgeye bağımlıdır.

    altındaki kayıt defterine HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server\Zones\ <zone_name>\ForwarderTimeoutkaydedilir.

    Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 ve Windows Server 2022'de varsayılan değer 5 saniyedir.

    Bu aynı zamanda Koşullu İleticiler GUI'sinde görebileceğiniz ayardır.

DNS sunucusu, yetkili olmadığı bir bölgedeki bir kayıt için sorgu aldığında ve bunun için Koşullu İleticiler kullanacak şekilde yapılandırıldığında, varsayılan davranış aşağıdaki gibidir:

Süre (başlangıçtan bu yana saniye) Eylem
0 İstemci, DNS sunucusunu sorgular. DNS sunucusu sorguyu hemen ilk koşullu ileticisine iletir.
<forwarder_timeout> forwarder_timeout> saniye sonra<, ilk koşullu iletici yanıt vermediyse, DNS sunucusu ikinci koşullu ileticiyi sorgular.
2 * <forwarder_timeout> +1 <forwarder_timeout> +1 saniye sonra, ikinci koşullu iletici yanıt vermediyse, DNS sunucusu üçüncü koşullu ileticiyi sorgular.
... ...
N * <forwarder_timeout> +(N-1) <forwarder_timeout> +1 saniye sonra, N. koşullu iletici yanıt vermediyse, DNS sunucusu (N+1) koşullu ileticiyi sorgular.

Not

Yapılandırılan gecikmeye ek olarak, sistem yükünden dolayı ek yarım saniyelik bir gecikme olabilir.

Algoritma, geçen süre RecursionTimeout değerini aştığında durur

RecursionTimeout'un süresi dolarsa, DNS sunucusu istemciye sunucu hatasıyla yanıt verir.

Not

Sunucu Hatasını RecursionTimeout süre sonundan hemen sonra değil, yalnızca sonraki koşullu ileticiyi deneme zamanı geldiğinde göndeririz.

Bu, varsayılan ayarlarla bir Windows DNS sunucusunun en fazla iki koşullu ileticiyi sorgulayabildiği anlamına gelir. Üçüncü koşullu ileticiyi kullanmak için yeterli zaman olmayacaktır. Aslında, varsayılan ayarlarla Windows DNS sunucusu şunları yapacaktır:

  • 0 saniye sonra ilk ileticiyi sorgulama
  • 5,5 saniye sonra ikinci ileticiyi sorgulama

Sekizinci saniyede RecursionTimeout'un süresi dolduğundan üçüncü koşullu ileticinin sorgulandığı noktaya ulaşamayacağız (5,5 + 6 = 11,5 saniye sonra olurdu).

Sunucu Hatası yanıtını 11,5 saniye sonra göndereceğiz.

Örnek:

IP adresi 192.168.0.1 olan DNS sunucusu, bölge Microsoft.comiçin beş koşullu ileticiyle (10.0.0.1-10.0.0.5) yapılandırılır.

İstemci 10.0.0.31 IP adresine sahiptir ve için Microsoft.comsorgular.

Ağ yakalamada aşağıdaki Ağ İzleyicisi çıkışını görebiliriz (not 10.0.0.3, 10.0.0.4 ve 10.0.0.5 hiçbir zaman sorgulanmamıştır):

Time Time Offset TimeDelta Kaynak Hedef Ayrıntıları
6:50:32.5481816 0.4306857 0.0000000 10.0.0.33 192.168.0.1 DNS:QueryId = 0x245A, QUERY (Standart sorgu), İnternet'te Konak Eklentisi türü için microsoft.com sorgu
6:50:32.5484341 0,4309382 0,0002525 192.168.0.1 10.0.0.1 DNS:QueryId = 0x252B, QUERY (Standart sorgu), İnternet'te Konak Eklentisi türü için microsoft.com sorgu
6:50:38.1695163 6.0520204 5.6210822 192.168.0.1 10.0.0.2 DNS:QueryId = 0x252B, QUERY (Standart sorgu), İnternet'te Konak Eklentisi türü için microsoft.com sorgu
6:50:44.1856567 12.0681608 6.0161404 192.168.0.1 10.0.0.33 DNS:QueryId = 0x245A, QUERY (Standart sorgu), Yanıt - Sunucu hatası

Başvurular