Превышение разрешения DNS для многодомного Windows 10


11

У меня есть несколько клиентских виртуальных машин с многосетевым интерфейсом 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


Посмотрите на этот вопрос: superuser.com/questions/966017/… haarymc указал, что DNS-преобразователь Windows 10 был значительно изменен, и указывает на некоторые возможные решения.
Брэндон Ксавьер

Я бы начал с DisableSmartNameResolution, который был упомянут.
Брэндон Ксавьер

Брэндон, похоже, что установка DisableSmartNameResolution равной 1 (а не 0, как рекомендуется по ссылке) сработала! Если вы хотите опубликовать это в качестве ответа, я буду награждать представителя. Спасибо!
Мэтт

LOL, так много проекций. Оставайтесь сумасшедшими, что Брэндон Ксавье обнаружил проблему здесь, будет получать +100 повторений, когда он публикует свой комментарий в качестве ответа, и что вы не можете потрудиться прочитать свои цитаты.
Мэтт

1
Вот еще одна хорошая ссылка об этой новой функции, и как она меняется с ОС Windows 8.1 в ОС Windows 10. medium.com/@ValdikSS/...
GuitarPicker

Ответы:


11

Microsoft в Windows 10 существенно изменила или переписала DNS Resolver.

Самое большое изменение состояло в том, чтобы выдавать DNS-запросы всем адаптерам параллельно, а затем принимать первый ответ. К сожалению, новый код содержит ошибки и упущения, и кажется, что вместо того, чтобы принимать первый ответ, он ждет всех ответов. Если для одного из DNS-запросов истечет время ожидания, это означает 10-секундное ожидание перед разрешением DNS.

Эта ошибка, несомненно, будет исправлена ​​в будущем обновлении Windows 10. До тех пор, чтобы максимально приблизить поведение к предыдущим версиям Windows, существуют следующие модификации реестра:

DisableSmartNameResolution (DWORD)

В ключе реестра HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\DNSClient.
Значение 1 для отключения, 0 для включения интеллектуального разрешения.
От Выключите смарт многодомного разрешения имен :

Указывает, что многодомный DNS-клиент должен оптимизировать разрешение имен в сетях. Этот параметр повышает производительность, выполняя параллельные запросы локальных многоадресных имен DNS-ссылок (LLMNR) и запросы NetBIOS через TCP / IP (NetBT) во всех сетях. В случае получения нескольких положительных ответов порядок привязки сети используется для определения того, какой ответ принять. Если вы включите этот параметр политики, клиент DNS не выполнит никаких оптимизаций. DNS-запросы будут выдаваться во всех сетях в первую очередь. Запросы LLMNR будут выдаваться в случае сбоя DNS-запросов, за которыми следуют запросы NetBT, если запросы LLMNR не выполняются. Если вы отключите этот параметр политики или не настроите этот параметр политики, разрешение имен будет оптимизировано при выдаче DNS-запросов LLMNR и NetBT.

DisableParallelAandAAAA (DWORD)

В ключе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters.
Значение 0 для включения, 1 для отключения DNS-запросов A и AAAA от параллельного выполнения на всех настроенных DNS-серверах, причем самый быстрый ответ сначала теоретически принимается.


1
Просто хотел добавить, что я на Win 10.0.10586 и HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\DNSClientне существует. Кроме того, DisableParallelAandAAAAне существует, но ключи существуют, чтобы можно было добавить его.
Махди

Это решило проблему VPN split-dns в Windows 10. При подключении к vpn (т. Е. С помощью клиента Cisco) dns vpn используется только иногда из-за этих двух функций. Отключая оба из них (интеллектуальное разрешение имен и параллельные запросы DNS), это позволяет надежно использовать DNS VPN. Кроме того, он решает проблему «утечки DNS», которая возникает у вас в небезопасной / ненадежной сети Wi-Fi, например в кафе с Windows 10. Ваши запросы DNS будут теперь проходить через vpn, а не иногда отправляться в кафе. СНД. Большое спасибо за предоставление этого решения!
truemedia

2
Удобная версия 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 -Type DWord
Ник

1
Эти ключи реестра не влияли на мой windows10, что работало так: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

источник

SMHNR слегка изменен для Windows 10 по сравнению с Windows 8. В Windows 10 его нельзя отключить через реестр.

В Windows 10 вы можете использовать «Локальные политики», чтобы отключить эту функцию. Для этого выполните следующие действия:

  • Нажмите WIN + R и напишите gpedit.msc
  • Развернуть Административные шаблоны Развернуть Сеть
  • Нажмите DNS-клиент. Дважды щелкните «Отключить интеллектуальное разрешение имен для нескольких домов».
  • Установите флажок «Включено»
  • Нажмите «Применить все», а затем «ОК»

Жюльен, я не говорю, что пути не изменились в реестре, но когда вы обновляете настройки в локальной политике, подавляющее большинство того, что вы делаете, вносит изменения в реестр (редактором локальной политики). На самом деле, это очень распространенный способ выяснить, какую часть реестра необходимо изменить напрямую для определенного параметра. Запустите ProcMon (из Sysinternals) и внесите изменения, а затем определите, какой эффективный путь реестра в каком кусте был обновлен, с чего до чего.
thepip3r

0

Поскольку DNS-серверы вашего домена не имеют доступа к корневым серверам, и у вас нет настроенной переадресации, вам нужно удалить недостижимые корневые ссылки с DNS-сервера, чтобы ускорить запросы по адресам, которые он не размещает. Это должно ускорить время ожидания и, в свою очередь, ускорить разрешение клиента. В противном случае он будет пытаться связаться с корневыми серверами, прежде чем сдаться.

Процедура удаления корневых ссылок в 2008 R2 описана здесь .


Спасибо за ответ, но этот вопрос касался поведения клиентов, а не DNS-сервера контроллера домена, как отмечено «... кто-нибудь знает, как должна вести себя Windows 10, и что более важно, как я могу настроить поведение "
Мэтт

Справедливо. Похоже, клиенты вели себя так из-за неоптимальной конфигурации. У вас есть клиенты не Windows 10, которые ведут себя по-другому?
GuitarPicker

Нет, у меня есть другие клиенты Win10 VM, у которых вместо Ethernet 2 подключен Ethernet3 (доступ в Интернет на основе VPN и DNS-сервер 1.2.3.4), и они ведут себя одинаково. И как клиент с несколькими домами с DNS-серверами для обеих сетей может считаться неоптимальным?
Мэтт

1
GuitarPicker, я попробовал ваше предложение не для клиента Win10, и похоже, что это поведение, специфичное для Windows 10.
Мэтт

Ответ @ harrymc выглядит так, как будто он позаботится обо всем на стороне клиента. Я действительно нашел его после прочтения вашего комментария и до прочтения его ответа. Microsoft на удивление тихо документирует это. Мое решение может дать вам немного больше времени на разрешение для всех клиентов, но его ответ объяснит разницу в клиентах.
GuitarPicker
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.