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

Сервер 2012R2 DNS-сервер, возвращающий SERVFAIL для некоторых запросов AAAA

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

У меня проблемы с DNS-серверами Server 2012R2. Самым большим побочным эффектом этих проблем является то, что электронные письма 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-серверу

10/16/2015 9:42:29 AM 0974 PACKET  000000EFF1BF01A0 UDP Rcv 172.16.0.254    a61e   Q [2001   D   NOERROR] AAAA   (7)smtpgw1(3)gov(2)on(2)ca(0)
UDP question info at 000000EFF1BF01A0
  Socket = 508
  Remote addr 172.16.0.254, port 50764
  Time Query=4556080, Queued=0, Expire=0
  Buf length = 0x0fa0 (4000)
  Msg length = 0x002e (46)
  Message:
    XID       0xa61e
    Flags     0x0120
      QR        0 (QUESTION)
      OPCODE    0 (QUERY)
      AA        0
      TC        0
      RD        1
      RA        0
      Z         0
      CD        0
      AD        1
      RCODE     0 (NOERROR)
    QCOUNT    1
    ACOUNT    0
    NSCOUNT   0
    ARCOUNT   1
    QUESTION SECTION:
    Offset = 0x000c, RR count = 0
    Name      "(7)smtpgw1(3)gov(2)on(2)ca(0)"
      QTYPE   AAAA (28)
      QCLASS  1
    ANSWER SECTION:
      empty
    AUTHORITY SECTION:
      empty
    ADDITIONAL SECTION:
    Offset = 0x0023, RR count = 0
    Name      "(0)"
      TYPE   OPT  (41)
      CLASS  4096
      TTL    0
      DLEN   0
      DATA   
        Buffer Size  = 4096
        Rcode Ext    = 0
        Rcode Full   = 0
        Version      = 0
        Flags        = 0

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

10/16/2015 9:42:29 AM 0974 PACKET  000000EFF0A22160 UDP Snd 204.41.8.237    3e6c   Q [0000       NOERROR] AAAA   (7)smtpgw1(3)gov(2)on(2)ca(0)
UDP question info at 000000EFF0A22160
  Socket = 9812
  Remote addr 204.41.8.237, port 53
  Time Query=0, Queued=0, Expire=0
  Buf length = 0x0fa0 (4000)
  Msg length = 0x0023 (35)
  Message:
    XID       0x3e6c
    Flags     0x0000
      QR        0 (QUESTION)
      OPCODE    0 (QUERY)
      AA        0
      TC        0
      RD        0
      RA        0
      Z         0
      CD        0
      AD        0
      RCODE     0 (NOERROR)
    QCOUNT    1
    ACOUNT    0
    NSCOUNT   0
    ARCOUNT   0
    QUESTION SECTION:
    Offset = 0x000c, RR count = 0
    Name      "(7)smtpgw1(3)gov(2)on(2)ca(0)"
      QTYPE   AAAA (28)
      QCLASS  1
    ANSWER SECTION:
      empty
    AUTHORITY SECTION:
      empty
    ADDITIONAL SECTION:
      empty

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

10/16/2015 9:42:29 AM 0974 PACKET  000000EFF2188100 UDP Rcv 204.41.8.237    3e6c R Q [0084 A     NOERROR] AAAA   (7)smtpgw1(3)gov(2)on(2)ca(0)
UDP response info at 000000EFF2188100
  Socket = 9812
  Remote addr 204.41.8.237, port 53
  Time Query=4556080, Queued=0, Expire=0
  Buf length = 0x0fa0 (4000)
  Msg length = 0x0023 (35)
  Message:
    XID       0x3e6c
    Flags     0x8400
      QR        1 (RESPONSE)
      OPCODE    0 (QUERY)
      AA        1
      TC        0
      RD        0
      RA        0
      Z         0
      CD        0
      AD        0
      RCODE     0 (NOERROR)
    QCOUNT    1
    ACOUNT    0
    NSCOUNT   0
    ARCOUNT   0
    QUESTION SECTION:
    Offset = 0x000c, RR count = 0
    Name      "(7)smtpgw1(3)gov(2)on(2)ca(0)"
      QTYPE   AAAA (28)
      QCLASS  1
    ANSWER SECTION:
      empty
    AUTHORITY SECTION:
      empty
    ADDITIONAL SECTION:
      empty

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

10/16/2015 9:42:29 AM 0974 PACKET  000000EFF1BF01A0 UDP Snd 172.16.0.254    a61e R Q [8281   DR SERVFAIL] AAAA   (7)smtpgw1(3)gov(2)on(2)ca(0)
UDP response info at 000000EFF1BF01A0
  Socket = 508
  Remote addr 172.16.0.254, port 50764
  Time Query=4556080, Queued=4556080, Expire=4556083
  Buf length = 0x0fa0 (4000)
  Msg length = 0x002e (46)
  Message:
    XID       0xa61e
    Flags     0x8182
      QR        1 (RESPONSE)
      OPCODE    0 (QUERY)
      AA        0
      TC        0
      RD        1
      RA        1
      Z         0
      CD        0
      AD        0
      RCODE     2 (SERVFAIL)
    QCOUNT    1
    ACOUNT    0
    NSCOUNT   0
    ARCOUNT   1
    QUESTION SECTION:
    Offset = 0x000c, RR count = 0
    Name      "(7)smtpgw1(3)gov(2)on(2)ca(0)"
      QTYPE   AAAA (28)
      QCLASS  1
    ANSWER SECTION:
      empty
    AUTHORITY SECTION:
      empty
    ADDITIONAL SECTION:
    Offset = 0x0023, RR count = 0
    Name      "(0)"
      TYPE   OPT  (41)
      CLASS  4000
      TTL    0
      DLEN   0
      DATA   
        Buffer Size  = 4000
        Rcode Ext    = 0
        Rcode Full   = 2
        Version      = 0
        Flags        = 0

Другие примечания:

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

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

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

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

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

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

С комплектом экспедитора я получаю 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-серверы этого не делают?

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

В соответствии с KB832223

Причина

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

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

Microsoft предлагает следующее решение:

разрешение

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

Microsoft предлагает следующее решение проблемы:

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

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

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

dnscmd /config /enableednsprobes 0

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