Назад | Перейти на главную страницу

DNS-сервер Windows: за 3 секунды до ответа NXDOMAIN

Мне интересно, есть ли способ контролировать время, необходимое до того, как будет дан ответ NXDOMAIN. Мне кажется, что если запрос сделан для записи, которая не существует, пройдет 3 секунды, прежде чем сервер ответит NXDOMAIN. Похоже, что это имеет место как в Windows Server 2008 R2, так и в Windows Server 2012 R2. У меня есть захват пакета ниже. Для целей моего вопроса мой сервер является авторитетным для example.com и example2.com:

09:13:06.846116 IP 10.200.242.165.49505 > 10.200.1.13.53:  33831+ A? asr-1.example.com. (46)
09:13:09.855028 IP 10.200.1.13.53 > 10.200.242.165.49505:  33831 NXDomain* 0/1/0 (112)

Я отправил эхо-запрос на хост, который, как я знал, не существует, но, похоже, потребовалось целых 3 секунды, прежде чем он сообщил мне, что его не существует (с 09:13:06 до 09:13:09). Чтобы вы не думали, что он куда-то пересылается для разрешения asr-1.example.com, я получу тот же результат, если nslookup -norecurse asr-1.example.com.

Чтобы показать вам, что сервер действительно быстрый, вот результат захвата пакета, с которого я искал хост в его фактическом домене:

09:13:09.855416 IP 10.200.242.165.49542 > 10.200.1.13.53:  47128+ A? asr-1.example2.com. (46)
09:13:09.855889 IP 10.200.1.13.53 > 10.200.242.165.49542:  47128* 1/0/0 (62)

Это ответ 0,4 миллисекунды ... так что дело не в том, что мой DNS-сервер работает медленно.

Итак ... есть ли способ настроить DNS-сервер так, чтобы он не ждал так долго, чтобы вернуть ответ NXDOMAIN для домена, для которого он является полномочным?

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

Можно настроить количество секунд до истечения времени ожидания прямых запросов.

  1. открыто dnsmgmt.msc.
  2. Щелкните правой кнопкой мыши имя DNS-сервера и выберите Свойства.
  3. На вкладке Серверы пересылки щелкните Редактировать....

  4. Выберите количество секунд.

    • По умолчанию 3.
    • Минимум должен быть 2, или время ожидания запросов могло истечь до завершения всех итераций.
    • >10 секунд также не рекомендуется, так как клиент может истечь время ожидания до ответа.

Эквивалент командной строки dnscmd /resetforwarders:

dnscmd <ServerName> /ResetForwarders <MasterIPaddress ...> [/TimeOut <Time>] [/Slave]

Я нашел проблему. Я сетевой инженер, а не специалист по AD, поэтому я изначально не настраивал DNS - они просто любезно предоставили мне к нему доступ. Проблема заключалась в том, что вкладка WINS домена была настроена на «Использовать прямой поиск WINS». Если вы нажмете «Advanced», появится настройка «Looukp time-out», равная 2 секундам. Если я отключу пересылку WINS, он немедленно вернет NXDOMAIN, как и следовало ожидать. ура!