Тайм-ауты разрешения DNS для Windows 10

13053
Matt

У меня есть несколько клиентских виртуальных машин с многосетевым подключением Windows 10, подключенных к домену Windows 2012 R2. Ethernet1 подключен к локальной сети с контроллерами домена (у которых нет серверов пересылки или доступа к корневым серверам), Ethernet2 подключен к локальной сети с доступом к Интернету, у Ethernet0 и Ethernet3 оба носителя отключены. Запросы на записи с контроллеров домена возвращаются просто отлично, но запросы на записи из интернета занимают 10 секунд плюс сколько угодно времени, чтобы DNS-серверы моего интернет-провайдера возвращали ответ. Если я запрашиваю DNS-серверы моего интернет-провайдера напрямую через nslookupимя, оно разрешается быстро (<1 секунда), если я просто запускаю nslookupбез указания DNS-сервера, запрос прерывается, и имя никогда не разрешается, и если я пытаюсь пропинговать DNS-имя, оно занимает> 10 секунд, прежде чем имя будет решено.

Я осмотрел Technet, но, похоже, еще нет документации по Windows 10. Лучшее, что я нашел:

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

Это говорит о том, что я должен ожидать, что мой клиент запросит первичный DNS-сервер для Ethernet1, подождет 1 секунду для ответа на тайм-аут, а затем запросит как вторичный DNS-сервер для Ethernet1, так и первичный DNS-сервер для Ethernet2, но это не кажется быть происходящим. Далее в документации говорится, что после 10 секунд (и еще 3 раундов DNS-запросов с более длительными тайм-аутами) разрешение DNS полностью не будет работать для всех адаптеров, но поведение клиента создает впечатление, что требуется 10 секунд, прежде чем даже предпринять попытку используйте DNS-серверы для второго адаптера.

В отсутствие меня (или вас), открывающего Wireshark и вынюхивающего линию или вслепую изменяющего HKLM\System\CurrentControlSet\Services\dnscache\Parameters\DNSQueryTimeouts, кто-нибудь знает, как должна вести себя Windows 10, и, что более важно, как я могу настроить поведение? Я готов жить с разрешением ~ 1 секунда, но 10 секунд довольно жестоко.

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 

Обновить

Если кому-то еще интересно, я подключил к домену виртуальную машину Win7 SP1 (без исправлений) с той же конфигурацией сетевого адаптера, перенес ее в то же подразделение, что и другие виртуальные машины, и на всякий случай обновил групповую политику на клиенте. Он способен разрешать DNS-запросы как с DNS-серверов DC, так и с моих интернет-провайдеров. Таким образом, похоже, что это поведение, специфичное для DNS-клиента Windows 10.

Обновление 2

Так что все становится страннее. Похоже, что Win10 по умолчанию будет выдавать запросы параллельно, но не будет передавать ответ тому процессу, который его запросил, до истечения времени ожидания всех запросов. И по какой-то причине DNS-сервер на моем втором контроллере домена не работает. Кто-нибудь знает, как отключить это поведение?

Wireshark Packet Trace

8
Посмотрите на этот вопрос: http://superuser.com/questions/966017/windows-10-vpn-and-slow-dns-lookups#comment1327350_966017 haarymc указал, что DNS-преобразователь Windows 10 был значительно изменен и указывает на некоторые возможные решения. Brandon Xavier 8 лет назад 0
Я бы начал с DisableSmartNameResolution, который был упомянут. Brandon Xavier 8 лет назад 0
Брэндон, похоже, что установка DisableSmartNameResolution равной 1 (а не 0, как рекомендуется по ссылке) сработала! Если вы хотите опубликовать это в качестве ответа, я буду награждать представителя. Спасибо! Matt 8 лет назад 0
LOL, так много проекций. Оставайтесь сумасшедшими, что Брэндон Ксавье обнаружил проблему здесь, будет получать +100 повторений, когда он публикует свой комментарий в качестве ответа, и что вы не можете потрудиться прочитать свои цитаты. Matt 8 лет назад 0
Ответ Harrymc ясно должен быть выбран в качестве ответа. Я просто сослался на его предыдущий вклад. Рад, что вы нашли решение! Brandon Xavier 8 лет назад 0
@ Брэндон, я буду, это было как раз в то время, когда он не писал здесь. В любом случае еще раз спасибо за указание на его пост! Matt 8 лет назад 0
Вот еще одна хорошая ссылка об этой новой функции и о том, как она меняется с Windows 8.1 на Windows 10. https://medium.com/@ValdikSS/beware-of-windows-10-dns-resolver-and-dns-leaks-5bc5bfb4e3f1 GuitarPicker 8 лет назад 1

2 ответа на вопрос

9
harrymc

Microsoft has in Windows 10 substantially modified or rewritten the DNS Resolver.

The biggest change was to issue DNS queries to all adapters in parallel, then take the first answer to arrive. Unfortunately the new code contains bugs and omissions, and it seems that rather than take the first answer, it waits for all answers. If one of the DNS queries will time-out, this means a 10-seconds wait before the DNS is resolved.

This bug will undoubtedly be fixed in a future update of Windows 10. Until then, to return the behavior as much as possible to that of previous Windows versions, the following registry modifications exist :

DisableSmartNameResolution (DWORD)

In registry key HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\DNSClient.
The value is 1 to disable, 0 to enable smart resolution.
From Turn off smart multi-homed name resolution :

Specifies that a multi-homed DNS client should optimize name resolution across networks. The setting improves performance by issuing parallel DNS link local multicast name resolution (LLMNR) and NetBIOS over TCP/IP (NetBT) queries across all networks. In the event that multiple positive responses are received the network binding order is used to determine which response to accept.If you enable this policy setting the DNS client will not perform any optimizations. DNS queries will be issued across all networks first. LLMNR queries will be issued if the DNS queries fail followed by NetBT queries if LLMNR queries fail.If you disable this policy setting or if you do not configure this policy setting name resolution will be optimized when issuing DNS LLMNR and NetBT queries.

DisableParallelAandAAAA (DWORD)

In registry key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters.
The value is 0 to enable, 1 to disable DNS A and AAAA queries from executing in parallel on all configured DNS servers, with the fastest response being theoretically accepted first.

Просто хотел добавить, что я нахожусь на Win 10.0.10586 и `HKEY_LOCAL_MACHINE \ Software \ Policies \ Microsoft \ Windows NT \ DNSClient` не существует. Кроме того, `DisableParallelAandAAAA` не существует, но ключи существуют, поэтому его можно добавить. Mahdi 8 лет назад 1
Это решило проблему VPN split-dns в Windows 10. При подключении к vpn (т. Е. С помощью клиента Cisco) dns vpn используется только иногда из-за этих двух функций. Отключая оба из них (интеллектуальное разрешение имен и параллельные запросы DNS), это позволяет надежно использовать DNS VPN. Кроме того, он решает проблему «утечки DNS», которая возникает у вас в небезопасной / ненадежной сети Wi-Fi, такой как в кафе с Windows 10. Ваши запросы DNS будут проходить через vpn, а не иногда отправляться в кафе. СНД. Большое спасибо за предоставление этого решения! truemedia 7 лет назад 0
Удобная версия PowerShell для всех, кто использует эту возможность (мы находимся в Stack Exchange): `Set-ItemProperty -Path" HKLM: \ Software \ Policies \ Microsoft \ Windows NT \ DNSClient "-Name DisableSmartNameResolution -Value 1 -Type DWord` и` Set- ItemProperty -Path "HKLM: \ SYSTEM \ CurrentControlSet \ Services \ Dnscache \ Parameters" -Name DisableParallelAandAAAA -Value 1 -Тип DWord` Nick Craver 7 лет назад 2
0
GuitarPicker

Since your domain DNS servers don't have access to the root servers and you don't have forwarding set up, you need to delete your unreachable root hints from the DNS server to speed up the queries for addresses it doesn't host. This should speed up the timeouts, and in turn speed up client resolution. Otherwise, it's going to keep trying to contact the root servers before giving up.

The procedure for removing root hints on 2008 R2 is documented here.

Спасибо за ответ, но этот вопрос касался поведения клиентов, а не DNS-сервера контроллера домена, как отмечено «... кто-нибудь знает, как должна вести себя Windows 10, и, что более важно, как я могу настроить поведение" Matt 8 лет назад 0
Справедливо. Похоже, клиенты вели себя так из-за неоптимальной конфигурации. У вас есть клиенты не Windows 10, которые ведут себя по-другому? GuitarPicker 8 лет назад 0
Нет, у меня есть другие клиенты Win10 VM, у которых вместо Ethernet 2 подключены Ethernet3 (доступ в Интернет на основе VPN и DNS-сервер 1.2.3.4), и они ведут себя одинаково. И как многосетевой клиент с DNS-серверами для обеих сетей может считаться неоптимальным? Matt 8 лет назад 0
GuitarPicker, я попробовал ваше предложение не для клиента Win10, и похоже, что это поведение, специфичное для Windows 10. Matt 8 лет назад 1
Ответ @ harrymc выглядит так, как будто он позаботится о вещах на стороне клиента. Я действительно нашел его после прочтения вашего комментария и до прочтения его ответа. Microsoft на удивление тихо документирует это. Мое решение может дать вам немного больше времени на разрешение для всех клиентов, но его ответ объяснит разницу в клиентах. GuitarPicker 8 лет назад 0
Да, я не отрицаю, что удаление корневых серверов из DNS моего DC не было бы плохой идеей, учитывая, что у них никогда не будет доступа в Интернет. Это было просто неожиданное поведение на стороне клиента, ответ на который мне был интересен. В любом случае, еще раз спасибо за ваш вклад! Matt 8 лет назад 0