Przekroczono limit czasu rozpoznawania DNS systemu Windows 10 Multihomed

11

Mam wiele maszyn wirtualnych klienta Windows 10 z wieloma systemami przyłączonymi do domeny Windows 2012 R2. Ethernet1 jest podłączony do sieci LAN za pomocą kontrolerów domeny (które nie mają usług przesyłania dalej lub dostępu do serwerów głównych), Ethernet2 jest podłączony do sieci LAN z dostępem do Internetu, Ethernet0 i Ethernet3 mają odłączone media. Zapytania o rekordy z kontrolerów domeny są zwracane w porządku, ale zapytania o rekordy z Internetu trwają 10 sekund plus jak długo serwery DNS mojego dostawcy ISP potrzebują czasu na odpowiedź. Jeśli zapytam serwery DNS mojego usługodawcy internetowego bezpośrednio za nslookuppomocą nazwy, zostanie ona natychmiast rozwiązana (<1 sekunda), jeśli po prostu uruchomię nslookupbez podania serwera DNS, zapytanie zostanie przekroczone, a nazwa nigdy nie zostanie rozwiązana, a jeśli spróbuję pingować nazwę DNS minie> 10 sekund, zanim nazwa zostanie rozpoznana.

Rozejrzałem się po Technet, ale wydaje się, że nie ma jeszcze żadnej dokumentacji w systemie Windows 10. Najlepsze, co znalazłem, to:

http://blogs.technet.com/b/networking/archive/2009/06/26/dns-client-resolver-behavior.aspx http://blogs.technet.com/b/stdqry/archive/2011/12 /15/dns-clients-and-timeouts-part-2.aspx

Co oznacza, że ​​powinienem oczekiwać, że mój klient zapyta podstawowego serwera DNS o Ethernet1, odczekaj 1 sekundę na odpowiedź na przekroczenie limitu czasu, a następnie zapytaj o pomocniczy serwer DNS dla Ethernet1 i podstawowy serwer DNS dla Ethernet2, ale to nie wydaje się się dzieje. Dokumentacja mówi dalej, że po 10 sekundach (i więcej 3 kolejnych rundach zapytań DNS z dłuższymi limitami czasu) rozpoznawanie DNS nie powiedzie się całkowicie dla wszystkich kart, ale zachowanie klienta sprawia wrażenie, że zajmuje to 10 sekund, zanim nawet spróbuje użyj serwerów DNS dla drugiego adaptera.

Nieobecny ja (lub ty) otwierający Wireshark i wąchający linię lub ślepo modyfikujący HKLM\System\CurrentControlSet\Services\dnscache\Parameters\DNSQueryTimeoutsczy ktoś wie, jak powinien zachowywać się Windows 10, a co ważniejsze, jak mogę przejść do konfigurowania tego zachowania? Jestem gotów żyć z rozdzielczością ~ 1 sekundy, ale 10 sekund jest raczej brutalne.

ipconfig

Ethernet adapter Ethernet1:

   Connection-specific DNS Suffix  . : intranet.mydomain.net
   Description . . . . . . . . . . . : Intel(R) 82574L Gigabit Network Connection #2
   Physical Address. . . . . . . . . : 00-0C-29-CC-E8-93
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::999b:3e21:749b:6f55%7(Preferred)
   IPv4 Address. . . . . . . . . . . : 10.2.0.20(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.0.0
   Lease Obtained. . . . . . . . . . : Sunday, September 6, 2015 8:17:00 AM
   Lease Expires . . . . . . . . . . : Sunday, September 13, 2015 8:17:00 AM
   Default Gateway . . . . . . . . . :
   DHCP Server . . . . . . . . . . . : 10.2.0.2
   DHCPv6 IAID . . . . . . . . . . . : 83889193
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-1D-74-AB-6A-00-0C-29-CC-E8-89
   DNS Servers . . . . . . . . . . . : 10.2.0.1
                                       10.2.0.2
   NetBIOS over Tcpip. . . . . . . . : Enabled

Ethernet adapter Ethernet2:

   Connection-specific DNS Suffix  . : internet.mydomain.net
   Description . . . . . . . . . . . : Intel(R) 82574L Gigabit Network Connection #3
   Physical Address. . . . . . . . . : 00-0C-29-CC-E8-9D
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::944:ded1:dc53:cec4%6(Preferred)
   IPv4 Address. . . . . . . . . . . : 192.168.1.116(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Lease Obtained. . . . . . . . . . : Sunday, September 6, 2015 8:17:04 AM
   Lease Expires . . . . . . . . . . : Monday, September 7, 2015 8:17:04 AM
   Default Gateway . . . . . . . . . : 192.168.1.1
   DHCP Server . . . . . . . . . . . : 192.168.1.1
   DHCPv6 IAID . . . . . . . . . . . : 83889193
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-1D-74-AB-6A-00-0C-29-CC-E8-89
   DNS Servers . . . . . . . . . . . : 75.75.75.75
                                       75.75.76.76
                                       8.8.8.8
   NetBIOS over Tcpip. . . . . . . . : Enabled

nslookup

C:\Users\username>nslookup www.google.com 75.75.75.75
Server:  cdns01.comcast.net
Address:  75.75.75.75

Non-authoritative answer:
Name:    www.google.com
Addresses:  2607:f8b0:4001:c07::69
          74.125.196.106
          74.125.196.104
          74.125.196.147
          74.125.196.105
          74.125.196.99
          74.125.196.103


C:\Users\username>nslookup www.google.com
DNS request timed out.
    timeout was 2 seconds.
Server:  UnKnown
Address:  10.2.0.1

DNS request timed out.
    timeout was 2 seconds.
DNS request timed out.
    timeout was 2 seconds.
*** Request to UnKnown timed-out

Aktualizacja

Na wypadek, gdyby ktoś się zastanawiał, dołączyłem do maszyny Wirtualnej Win7 SP1 (bez poprawek) z tą samą konfiguracją karty sieciowej w domenie, przeniosłem ją do tej samej jednostki organizacyjnej co inne maszyny wirtualne i na wszelki wypadek zaktualizowałem zasady grupy na kliencie. Jest w stanie natychmiast rozwiązać zapytania DNS zarówno z serwerów DNS DC, jak i moich dostawców usług internetowych. Wygląda więc na to, że jest to zachowanie specyficzne dla klienta DNS systemu Windows 10.

Aktualizacja 2

Sprawy stają się coraz dziwniejsze. Wygląda na to, że Win10 domyślnie będzie wydawać zapytania równolegle, ale nie przekaże odpowiedzi na dowolny żądany proces, dopóki nie upłynie limit czasu wszystkich zapytań. I z jakiegoś powodu serwer DNS na moim drugim kontrolerze domeny nie działa. Czy ktoś wie, jak wyłączyć to zachowanie?

Wireshark Packet Trace

Matt
źródło
Spójrz na to pytanie: superuser.com/questions/966017/... haarymc zwrócił uwagę, że resolver DNS systemu Windows 10 został znacznie zmodyfikowany i wskazuje kilka możliwych rozwiązań.
Brandon Xavier
Zacznę od DisableSmartNameResolution, o której wspomniano.
Brandon Xavier
Brandon, wygląda na to, że ustawienie DisableSmartNameResolution na 1 (zamiast 0, zgodnie z zaleceniem linku) działało! Jeśli chcesz opublikować, to jako odpowiedź, nagrodzę przedstawiciela. Dzięki!
Matt
LOL, tyle projekcji. Nie martw się, że Brandon Xavier znalazł tutaj problem, dostanie +100 powtórzeń, gdy opublikuje swój komentarz jako odpowiedź, i że nie możesz mieć kłopotów z czytaniem własnych cytatów.
Matt
1
Oto kolejny dobry link na temat tej nowej funkcji i jej zmiany z Windows 8.1 na Windows 10. medium.com/@ValdikSS/…
GuitarPicker

Odpowiedzi:

11

Microsoft w Windows 10 znacznie zmodyfikował lub przepisał DNS Resolver.

Największą zmianą było równoległe wysyłanie zapytań DNS do wszystkich kart, a następnie uzyskanie pierwszej odpowiedzi. Niestety nowy kod zawiera błędy i przeoczenia i wydaje się, że zamiast przyjąć pierwszą odpowiedź, czeka na wszystkie odpowiedzi. Jeśli jedno z zapytań DNS przekroczy limit czasu, oznacza to 10 sekund oczekiwania na rozwiązanie DNS.

Ten błąd zostanie bez wątpienia naprawiony w przyszłej aktualizacji systemu Windows 10. Do tego czasu, aby przywrócić zachowanie w jak największym stopniu do poprzednich wersji systemu Windows, istnieją następujące modyfikacje rejestru:

DisableSmartNameResolution (DWORD)

W kluczu rejestru HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\DNSClient.
Wartość wynosi 1, aby wyłączyć, 0, aby włączyć inteligentną rozdzielczość.
Od Wyłącz inteligentne rozpoznawanie nazw dla wielu baz :

Określa, że ​​klient DNS z wieloma bazami danych powinien optymalizować rozpoznawanie nazw w sieciach. To ustawienie poprawia wydajność, wydając równoległe rozpoznawanie nazw lokalnych łączy multiemisji DNS (LLMNR) i NetBIOS przez zapytania TCP / IP (NetBT) we wszystkich sieciach. W przypadku otrzymania wielu pozytywnych odpowiedzi kolejność powiązań sieciowych jest używana do ustalenia, która odpowiedź ma zostać zaakceptowana. Jeśli włączysz to ustawienie zasad, klient DNS nie przeprowadzi żadnych optymalizacji. Zapytania DNS będą wydawane najpierw we wszystkich sieciach. Zapytania LLMNR będą wydawane, jeśli zapytania DNS zakończą się niepowodzeniem, a następnie zapytania NetBT, jeśli zapytania LLMNR zakończą się niepowodzeniem. Jeśli wyłączysz to ustawienie zasad lub jeśli nie skonfigurujesz tego ustawienia, ustawienie nazw zasad zostanie zoptymalizowane podczas wydawania zapytań DNS LLMNR i NetBT.

DisableParallelAandAAAA (DWORD)

W kluczu rejestru HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters.
Wartość wynosi 0, aby włączyć, 1, aby wyłączyć równoległe wykonywanie zapytań DNS A i AAAA na wszystkich skonfigurowanych serwerach DNS, przy czym najszybsza odpowiedź jest teoretycznie akceptowana jako pierwsza.

harrymc
źródło
1
Chciałem tylko dodać, że korzystam z Win 10.0.10586 i HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\DNSClientnie istnieje. Ponadto DisableParallelAandAAAAnie istnieje, ale klucze istnieją, więc można je dodać.
Mahdi
To rozwiązało problem VPN split-dns w systemie Windows 10. Po podłączeniu do VPN (tj. Za pomocą klienta Cisco), dns VPN jest używany tylko przez pewien czas z powodu tych dwóch funkcji. Wyłączając oba te (inteligentne rozpoznawanie nazw i równoległe zapytania dns), umożliwia niezawodne korzystanie z dns VPN. Rozwiązuje również problem „wycieku dns”, który występuje w niepewnej / niezaufanej sieci Wi-Fi, takiej jak w kawiarni z Windows 10. Twoje zapytania dotyczące dns będą teraz przesyłane przez VPN zamiast czasem do kawiarni dns. Dziękuję bardzo za zapewnienie tego rozwiązania!
truemedia,
2
Przydatna wersja PowerShell dla każdego, kto ją dotknie (jesteśmy na Stack Exchange): Set-ItemProperty -Path "HKLM:\Software\Policies\Microsoft\Windows NT\DNSClient" -Name DisableSmartNameResolution -Value 1 -Type DWordiSet-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters" -Name DisableParallelAandAAAA -Value 1 -Type DWord
Nick Craver
2
Te klucze rejestru nie miały wpływu na mój system Windows 10, działało to:Press WIN+R and write gpedit.msc Expand Administrative templates Expand Network Click DNS-client Double-click "Turn off smart multi-homed name resolution" Check the box called "Enabled" Click "Apply all" and then "OK"
Julien
1

źródło

SMHNR jest nieco zmieniony w systemie Windows 10 w porównaniu z Windows 8. W systemie Windows 10 nie można go wyłączyć za pomocą rejestru.

W systemie Windows 10 możesz użyć „Lokalnych zasad”, aby wyłączyć tę funkcję. Aby to zrobić, wykonaj następujące czynności:

  • Naciśnij WIN + R i napisz gpedit.msc
  • Rozwiń Szablony administracyjne Rozwiń sieć
  • Kliknij klienta DNS Kliknij dwukrotnie „Wyłącz inteligentne rozpoznawanie nazw dla wielu baz”
  • Zaznacz pole „Włączone”
  • Kliknij „Zastosuj wszystko”, a następnie „OK”
Julien
źródło
Julien, nie mówię, że ścieżki nie zostały przeniesione do rejestru, ale kiedy aktualizujesz ustawienia w Polityce lokalnej, przeważająca większość twoich działań to wprowadzanie zmian w rejestrze (przez Edytora zasad lokalnych). W rzeczywistości jest to bardzo powszechny sposób na określenie, którą część rejestru należy bezpośrednio zmodyfikować dla określonego ustawienia. Uruchom ProcMon (z Sysinternals) i wprowadź zmiany, a następnie określ, jaka efektywna ścieżka rejestru w tym ulu została zaktualizowana z czego do czego.
thepip3r,
0

Ponieważ serwery DNS domeny nie mają dostępu do serwerów głównych i nie skonfigurowano przekazywania, należy usunąć nieosiągalne wskazówki root z serwera DNS, aby przyspieszyć zapytania dotyczące adresów, których nie obsługuje. To powinno przyspieszyć limity czasu, a tym samym przyspieszyć rozwiązywanie problemów klientów. W przeciwnym razie będzie próbować skontaktować się z serwerami root przed poddaniem się.

Procedura usuwania wskazówek dotyczących roota w 2008 R2 jest tutaj udokumentowana .

GuitarPicker
źródło
Dzięki za odpowiedź, ale to pytanie dotyczyło zachowania klientów, a nie serwera DNS kontrolera domeny, jak zauważył „… czy ktoś wie, jak powinien zachowywać się system Windows 10, a co ważniejsze, jak mogę przejść do konfiguracji zachowanie ”
Matt
Słusznie. Wyglądało na to, że klienci zachowywali się w ten sposób z powodu nieoptymalnej konfiguracji. Czy masz klientów innych niż Windows 10, którzy zachowują się inaczej?
GuitarPicker,
Nie, mam innych klientów Win10 VM, którzy mają Ethernet3 (dostęp do Internetu oparty na VPN i serwer DNS 1.2.3.4) zamiast Ethernet2 i zachowują się tak samo. A w jaki sposób klient wieloadresowy z serwerami DNS dla obu sieci mógłby być kiedykolwiek uważany za nieoptymalny?
Matt
1
GuitarPicker, wypróbowałem sugestię klienta inną niż Win10 i wygląda na to, że jest to zachowanie specyficzne dla systemu Windows 10.
Matt
Odpowiedź @ harrymc wygląda na to, że zajmie się sprawami po stronie klienta. Znalazłem go po przeczytaniu twojego komentarza i przed przeczytaniem jego odpowiedzi. Microsoft jest zaskakująco cichy w dokumentowaniu tego. Moje rozwiązanie może dać ci nieco więcej czasu na rozwiązanie problemu dla wszystkich klientów, ale jego odpowiedź wyjaśniłaby różnicę w klientach.
GuitarPicker,