DNS-сервер Server 2012R2 возвращает SERVFAIL для некоторых запросов AAAA

DNS-сервер Server 2012R2 возвращает SERVFAIL для некоторых запросов AAAA

(Переписываю большую часть этого вопроса, поскольку многие из моих первоначальных тестов неактуальны в свете новой информации)

У меня проблемы с DNS-серверами Server 2012R2. Самый большой побочный эффект этих проблем — непрохождение писем Exchange. Exchange запрашивает записи AAAA перед тем, как пробовать записи A. Когда он видит SERVFAIL для записи AAAA, он даже не пробует записи A, он просто сдается.

Для некоторых доменов при запросе к моим DNS-серверам Active Directory я получаю SERVFAIL вместо NOERROR без каких-либо результатов.

Я пробовал это с нескольких разных контроллеров домена Server 2012R2, которые работают с DNS. Один из них — это совершенно отдельный домен, в другой сети за другим брандмауэром и подключением к интернету.

Я знаю два адреса, которые вызывают эту проблему: smtpgw1.gov.on.caиmxmta.owm.bell.net

digДля тестирования я использовал на машине Linux (192.168.5.5 — мой контроллер домена):

grant@linuxbox:~$ dig @192.168.5.5 smtpgw1.gov.on.ca -t AAAA

; <<>> DiG 9.9.5-3ubuntu0.5-Ubuntu <<>> @192.168.5.5 smtpgw1.gov.on.ca -t AAAA
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 56328
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;smtpgw1.gov.on.ca.             IN      AAAA

;; Query time: 90 msec
;; SERVER: 192.168.5.5#53(192.168.5.5)
;; WHEN: Wed Oct 21 14:09:10 EDT 2015
;; MSG SIZE  rcvd: 46

Но запросы к контроллеру публичного домена работают так, как и ожидалось:

grant@home-ssh:~$ dig @4.2.2.1 smtpgw1.gov.on.ca -t AAAA

; <<>> DiG 9.9.5-3ubuntu0.5-Ubuntu <<>> @4.2.2.1 smtpgw1.gov.on.ca -t AAAA
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 269
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 8192
;; QUESTION SECTION:
;smtpgw1.gov.on.ca.             IN      AAAA

;; Query time: 136 msec
;; SERVER: 4.2.2.1#53(4.2.2.1)
;; WHEN: Wed Oct 21 14:11:19 EDT 2015
;; MSG SIZE  rcvd: 46

Как я уже сказал, я пробовал это на двух разных сетях и доменах. Один из них — совершенно новый домен, в котором определенно все настройки DNS по умолчанию. Другой был перенесен на Server 2012, поэтому некоторые старые настройки из 2003/2008 могли перенестись. Я получаю одинаковые результаты на обоих.

Отключение EDNS dmscnd /config /enableednsprobes 0исправляет это. Я вижу много результатов поиска о том, что EDNS является проблемой в Server 2003, но мало что соответствует тому, что я вижу в Server 2012. Ни один из брандмауэров не имеет проблем с EDNS. Отключение EDNS должно быть просто временным решением — оно предотвращает использование DNSSEC и может вызвать другие проблемы.

Я также видел несколько сообщений о проблемах с Server 2008R2 и EDNS, но в тех же сообщениях говорится, что в Server 2012 все исправлено, так что все должно работать правильно.

Я также попробовал включить журнал отладки для DNS. Я вижу пакеты, которые ожидал, но это не дает мне особого представления о том, почему он возвращает SERVFAIL. Вот соответствующие части журнала отладки DNS-сервера:

Первый пакет — запрос от клиента к моему DNS-серверу

16.10.2015 9:42:29 0974 ПАКЕТ 000000EFF1BF01A0 UDP Rcv 172.16.0.254 a61e Q [2001 D NOERROR] AAAA (7)smtpgw1(3)gov(2)on(2)ca(0)
Информация о вопросе UDP по адресу 000000EFF1BF01A0
  Гнездо = ​​508
  Удаленный адрес 172.16.0.254, порт 50764
  Время запроса=4556080, В очереди=0, Истекает=0
  Длина буфера = 0x0fa0 (4000)
  Длина сообщения = 0x002e (46)
  Сообщение:
    XID-код 0xa61e
    Флаги 0x0120
      QR 0 (ВОПРОС)
      ОПЕРАЦИОННЫЙ КОД 0 (ЗАПРОС)
      АА 0
      ТК 0
      РД 1
      РА 0
      Я 0
      КД 0
      1 год нашей эры
      RCODE 0 (БЕЗ ОШИБКИ)
    КОЛИЧЕСТВО 1
    СЧЕТ 0
    NSCOUNT 0
    ARCOUNT 1
    РАЗДЕЛ ВОПРОСОВ:
    Смещение = 0x000c, количество RR = 0
    Имя "(7)smtpgw1(3)gov(2)on(2)ca(0)"
      QТИП AAAA (28)
      QКЛАСС 1
    РАЗДЕЛ ОТВЕТОВ:
      пустой
    РАЗДЕЛ ВЛАСТИ:
      пустой
    ДОПОЛНИТЕЛЬНЫЙ РАЗДЕЛ:
    Смещение = 0x0023, количество RR = 0
    Имя "(0)"
      ТИП ОПЦИЯ (41)
      КЛАСС 4096
      ТТЛ 0
      ДЛЕН 0
      ДАННЫЕ   
        Размер буфера = 4096
        Rcode Ext = 0
        Rcode Полный = 0
        Версия = 0
        Флаги = 0

Второй пакет — запрос с моего DNS-сервера на их DNS-сервер

16.10.2015 9:42:29 0974 ПАКЕТ 000000EFF0A22160 UDP Snd 204.41.8.237 3e6c Q [0000 NOERROR] AAAA (7)smtpgw1(3)gov(2)on(2)ca(0)
Информация о вопросе UDP по адресу 000000EFF0A22160
  Гнездо = ​​9812
  Удаленный адрес 204.41.8.237, порт 53
  Время запроса=0, В очереди=0, Истекает=0
  Длина буфера = 0x0fa0 (4000)
  Длина сообщения = 0x0023 (35)
  Сообщение:
    XID-код 0x3e6c
    Флаги 0x0000
      QR 0 (ВОПРОС)
      ОПЕРАЦИОННЫЙ КОД 0 (ЗАПРОС)
      АА 0
      ТК 0
      РД 0
      РА 0
      Я 0
      КД 0
      0 г. н.э.
      RCODE 0 (БЕЗ ОШИБКИ)
    КОЛИЧЕСТВО 1
    СЧЕТ 0
    NSCOUNT 0
    ARCOUNT 0
    РАЗДЕЛ ВОПРОСОВ:
    Смещение = 0x000c, количество RR = 0
    Имя "(7)smtpgw1(3)gov(2)on(2)ca(0)"
      QТИП AAAA (28)
      QКЛАСС 1
    РАЗДЕЛ ОТВЕТОВ:
      пустой
    РАЗДЕЛ ВЛАСТИ:
      пустой
    ДОПОЛНИТЕЛЬНЫЙ РАЗДЕЛ:
      пустой

Третий пакет - ответ от их DNS-сервера (NOERROR)

16.10.2015 9:42:29 0974 ПАКЕТ 000000EFF2188100 UDP Rcv 204.41.8.237 3e6c RQ [0084 A NOERROR] AAAA (7)smtpgw1(3)gov(2)on(2)ca(0)
Информация об ответе UDP по адресу 000000EFF2188100
  Гнездо = ​​9812
  Удаленный адрес 204.41.8.237, порт 53
  Время запроса=4556080, В очереди=0, Истекает=0
  Длина буфера = 0x0fa0 (4000)
  Длина сообщения = 0x0023 (35)
  Сообщение:
    XID-код 0x3e6c
    Флаги 0x8400
      QR 1 (ОТВЕТ)
      ОПЕРАЦИОННЫЙ КОД 0 (ЗАПРОС)
      АА 1
      ТК 0
      РД 0
      РА 0
      Я 0
      КД 0
      0 г. н.э.
      RCODE 0 (БЕЗ ОШИБКИ)
    КОЛИЧЕСТВО 1
    СЧЕТ 0
    NSCOUNT 0
    ARCOUNT 0
    РАЗДЕЛ ВОПРОСОВ:
    Смещение = 0x000c, количество RR = 0
    Имя "(7)smtpgw1(3)gov(2)on(2)ca(0)"
      QТИП AAAA (28)
      QКЛАСС 1
    РАЗДЕЛ ОТВЕТОВ:
      пустой
    РАЗДЕЛ ВЛАСТИ:
      пустой
    ДОПОЛНИТЕЛЬНЫЙ РАЗДЕЛ:
      пустой

Четвертый пакет — ответ моего DNS-сервера клиенту (SERVFAIL)

10/16/2015 9:42:29 AM 0974 ПАКЕТ 000000EFF1BF01A0 UDP Snd 172.16.0.254 a61e RQ [8281 DR SERVFAIL] AAAA (7)smtpgw1(3)gov(2)on(2)ca(0)
Информация об ответе UDP по адресу 000000EFF1BF01A0
  Гнездо = ​​508
  Удаленный адрес 172.16.0.254, порт 50764
  Время запроса=4556080, В очереди=4556080, Истекает=4556083
  Длина буфера = 0x0fa0 (4000)
  Длина сообщения = 0x002e (46)
  Сообщение:
    XID-код 0xa61e
    Флаги 0x8182
      QR 1 (ОТВЕТ)
      ОПЕРАЦИОННЫЙ КОД 0 (ЗАПРОС)
      АА 0
      ТК 0
      РД 1
      РА 1
      Я 0
      КД 0
      0 г. н.э.
      RCODE 2 (СБОЙ ОБСЛУЖИВАНИЯ)
    КОЛИЧЕСТВО 1
    СЧЕТ 0
    NSCOUNT 0
    ARCOUNT 1
    РАЗДЕЛ ВОПРОСОВ:
    Смещение = 0x000c, количество RR = 0
    Имя "(7)smtpgw1(3)gov(2)on(2)ca(0)"
      QТИП AAAA (28)
      QКЛАСС 1
    РАЗДЕЛ ОТВЕТОВ:
      пустой
    РАЗДЕЛ ВЛАСТИ:
      пустой
    ДОПОЛНИТЕЛЬНЫЙ РАЗДЕЛ:
    Смещение = 0x0023, количество RR = 0
    Имя "(0)"
      ТИП ОПЦИЯ (41)
      КЛАСС 4000
      ТТЛ 0
      ДЛЕН 0
      ДАННЫЕ   
        Размер буфера = 4000
        Rcode Ext = 0
        Rcode Полный = 2
        Версия = 0
        Флаги = 0

Другие важные моменты:

  • Одна из сетей имеет собственный доступ к интернету IPv6, другая — нет (но стек IPv6 включен на серверах с настройками по умолчанию). Похоже, это не проблема сети IPv6
  • Это не влияет на все домены. Например, dig @192.168.5.5 -t AAAA serverfault.comвозвращает NOERROR и никаких результатов. То же самое для google.comправильного возврата IPv6-адресов Google.
  • Попробовал установить исправление изКБ3014171, не имело никакого значения.
  • Обновление отКБ3004539уже установлено.

Редактировать 7 ноября 2015 г.

Я настроил другую машину Server 2012R2, не присоединенную к домену, и установил роль DNS-сервера, и протестировал с помощью команды nslookup -type=aaaa smtpgw1.gov.on.ca localhost. У нее НЕТ тех же проблем.

Обе ВМ находятся на одном хосте и в одной сети, что исключает любые проблемы с сетью/брандмауэром. Теперь все зависит либо от уровня исправления, либо от членства в домене/контроллера домена.

Редактировать 8 ноября 2015 г.

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

Теперь, я уверен, что я пробовал с пересылкой и без в моих первоначальных тестах, но я пробовал это только digс машины linux. Я получаю немного разные результаты с настройкой пересылки и без нее (пробовал с Google, OpenDNS, 4.2.2.1 и DNS-серверами моего провайдера), когда я использую nslookup на машине windows.

С установленным пересылателем я получаю Server failed.

Без пересылки (поэтому используются корневые DNS-серверы) я получаю No IPv6 address (AAAA) records available for smtpgw1.gov.on.ca.

Но это все равно не то же самое, что я получаю для других доменов, не имеющих записей IPv6 — nslookup в Windows просто не возвращает результатов для других доменов.

С пересылкой или без нее это имя digвсе равно отображается SERVFAILпри запросе моего DNS-сервера Windows.

ЕСТЬ небольшая разница между проблемным доменом и другими, которая кажется важной, даже когда я не задействую свой DNS-сервер Windows:

dig -t aaaa @8.8.8.8 smtpgw1.gov.on.caне имеет ответов и не имеет раздела об авторитетности.

dig -t aaaa @8.8.8.8 serverfault.comне возвращает ответов, но имеет раздел полномочий. Как и большинство других доменов, которые я пробую, независимо от того, какой резолвер я использую.

Так почему же этот раздел полномочий отсутствует, и почему DNS-сервер Windows считает его сбоем, а другие DNS-серверы — нет?

решение1

Я еще раз изучил сетевую тактовую и немного почитал. Запрос записи AAAA, когда ее нет, возвращает SOA. Оказывается, SOA относится к другому домену, нежели запрашиваемый. Подозреваю, именно поэтому Windows отклоняет ответ. Запрос AAAA для mx.atomwide.com. Ответ SOA для lgfl.org.uk. Посмотрим, сможем ли мы добиться прогресса с этой информацией. ПРАВКА: Просто для справки на будущее, временное отключение «Безопасного кэша от загрязнения» позволит запросу успешно выполниться. Не идеально, но доказывает, что проблема в сомнительной записи DNS. RFC4074 также является хорошим источником — Введение и Раздел.

решение2

В соответствии сКБ832223

Причина

Эта проблема возникает из-за функциональности механизмов расширения DNS (EDNS0), которая поддерживается в Windows Server DNS.

EDNS0 допускает большие размеры пакетов User Datagram Protocol (UDP). Однако некоторые программы брандмауэров могут не разрешать пакеты UDP размером более 512 байт. Поэтому эти пакеты DNS могут блокироваться брандмауэром.

У Microsoft есть следующее решение:

Разрешение

Чтобы решить эту проблему, обновите программу брандмауэра, чтобы распознавать и разрешать пакеты UDP, размер которых превышает 512 байт. Для получения дополнительной информации о том, как это сделать, обратитесь к производителю программы брандмауэра.

У Microsoft есть следующее предложение по решению этой проблемы:

Обходной путь

Чтобы обойти эту проблему, отключите функцию EDNS0 на DNS-серверах на базе Windows. Для этого выполните следующие действия:

В командной строке введите следующую команду и нажмите Enter:

dnscmd /config /enableednsprobes 0

Примечание. Введите 0 (ноль), а не букву «O» после «enableednsprobes» в этой команде.

Связанный контент