
(新しい情報を考慮すると、私の元のテストの多くは無関係であるため、この質問の大部分を書き直します)
Server 2012R2 DNS サーバーで問題が発生しています。この問題の最大の副作用は、Exchange メールが届かないことです。Exchange は、A レコードを試す前に AAAA レコードをクエリします。AAAA レコードの SERVFAIL が検出されると、A レコードを試みることすらなく、諦めてしまいます。
一部のドメインでは、アクティブ ディレクトリ DNS サーバーに対してクエリを実行すると、結果が表示されず、NOERROR ではなく SERVFAIL が返されます。
私は、DNS を実行している複数の異なる Server 2012R2 ドメイン コントローラーからこれを試しました。そのうちの 1 つは、異なるファイアウォールとインターネット接続の背後にある異なるネットワーク上の完全に別のドメインです。
この問題を引き起こすことがわかっている2つのアドレスは次のとおりです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
前述したように、私はこれを 2 つの異なるネットワークとドメインで試しました。1 つはまったく新しいドメインで、DNS のすべてのデフォルト設定が確実に保持されています。もう 1 つは Server 2012 に移行されているため、2003/2008 の古い設定が一部引き継がれている可能性があります。どちらでも同じ結果が得られました。
EDNS を無効にすると、dmscnd /config /enableednsprobes 0
問題は解決します。Server 2003 で EDNS が問題になっているという検索結果は多数ありますが、Server 2012 で発生している問題と一致するものはほとんどありません。どちらのファイアウォールも EDNS に問題はありません。ただし、EDNS を無効にするのは一時的な回避策に過ぎません。DNSSEC の使用が妨げられ、他の問題が発生する可能性があります。
Server 2008R2 と EDNS の問題に関する投稿もいくつか見ましたが、同じ投稿では Server 2012 では問題が修正されていると述べられているため、正常に動作するはずです。
DNS のデバッグ ログを有効にしてみました。予想通りのパケットは表示されましたが、SERVFAIL が返される理由についてはよくわかりません。DNS サーバーのデバッグ ログの関連部分は次のとおりです。
最初のパケット - クライアントからDNSサーバーへのクエリ
2015年10月16日午前9時42分29秒 0974 パケット 000000EFF1BF01A0 UDP 受信 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) メッセージ: 0xa61e の フラグ 0x0120 QR 0 (質問) オペコード 0 (クエリ) AA0 ... TC0 ... RD1 10月 RA 0 0 ゼット CD 0 西暦1年 RCODE 0 (エラーなし) 質問数 1 アカウント 0 NSカウント 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 秒 DLEN 0 データ バッファサイズ = 4096 Rコード拡張子 = 0 Rコードフル = 0 バージョン = 0 フラグ = 0
2番目のパケット - 私のDNSサーバーから相手のDNSサーバーへのクエリ
2015年10月16日午前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) メッセージ: 0x3e6c の フラグ 0x0000 QR 0 (質問) オペコード 0 (クエリ) AA0 ... TC0 ... RD0 RA 0 0 ゼット CD 0 西暦0年 RCODE 0 (エラーなし) 質問数 1 アカウント 0 NSカウント 0 ARCOUNT 0 質問セクション: オフセット = 0x000c、RR カウント = 0 名前「(7)smtpgw1(3)gov(2)on(2)ca(0)」 QタイプAAAA (28) Qクラス1 回答セクション: 空の 権限セクション: 空の 追加セクション: 空の
3 番目のパケット - DNS サーバーからの応答 (NOERROR)
2015年10月16日午前9時42分29秒 0974 パケット 000000EFF2188100 UDP 受信 204.41.8.237 3e6c RQ [0084 A NOERROR] AAAA (7)smtpgw1(3)gov(2)on(2)ca(0) 000000EFF2188100 の UDP 応答情報 ソケット = 9812 リモートアドレス 204.41.8.237、ポート 53 時間クエリ=4556080、キュー=0、有効期限=0 バッファ長 = 0x0fa0 (4000) メッセージの長さ = 0x0023 (35) メッセージ: 0x3e6c の フラグ 0x8400 QR 1 (応答) オペコード 0 (クエリ) AA1 1 TC0 ... RD0 RA 0 0 ゼット CD 0 西暦0年 RCODE 0 (エラーなし) 質問数 1 アカウント 0 NSカウント 0 ARCOUNT 0 質問セクション: オフセット = 0x000c、RR カウント = 0 名前「(7)smtpgw1(3)gov(2)on(2)ca(0)」 QタイプAAAA (28) Qクラス1 回答セクション: 空の 権限セクション: 空の 追加セクション: 空の
4 番目のパケット - DNS サーバーからクライアントへの応答 (SERVFAIL)
2015年10月16日午前9時42分29秒 0974 パケット 000000EFF1BF01A0 UDP Snd 172.16.0.254 a61e RQ [8281 DR SERVFAIL] AAAA (7)smtpgw1(3)gov(2)on(2)ca(0) 000000EFF1BF01A0 の UDP 応答情報 ソケット = 508 リモート アドレス 172.16.0.254、ポート 50764 時間クエリ=4556080、キュー=4556080、有効期限=4556083 バッファ長 = 0x0fa0 (4000) メッセージの長さ = 0x002e (46) メッセージ: 0xa61e の フラグ 0x8182 QR 1 (応答) オペコード 0 (クエリ) AA0 ... TC0 ... RD1 10月 RA 1 0 ゼット CD 0 西暦0年 RCODE 2 (SERVFAIL) 質問数 1 アカウント 0 NSカウント 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 秒 DLEN 0 データ バッファサイズ = 4000 Rコード拡張子 = 0 Rコードフル = 2 バージョン = 0 フラグ = 0
その他の注目すべき点:
- 一方のネットワークにはネイティブ IPv6 インターネット アクセスがありますが、もう一方のネットワークにはありません (ただし、サーバーでは IPv6 スタックがデフォルト設定で有効になっています)。IPv6 ネットワークの問題ではないようです。
- すべてのドメインに影響するわけではありません。たとえば、
dig @192.168.5.5 -t AAAA serverfault.com
NOERROR を返し、結果は返されません。Googlegoogle.com
の IPv6 アドレスを正しく返す場合も同様です。 - 修正プログラムをインストールしようとしましたKB3014171、違いはありませんでした。
- アップデートKB3004539すでにインストールされています。
2015年11月7日編集
ドメインに参加していない別の Server 2012R2 マシンをセットアップし、DNS サーバー ロールをインストールして、コマンドでテストしましたnslookup -type=aaaa smtpgw1.gov.on.ca localhost
。同じ問題は発生しません。
両方の VM は同じホスト、同じネットワーク上にあるため、ネットワーク/ファイアウォールの問題は発生しません。これで、違いを生むのは、パッチ レベルか、ドメイン メンバー/ドメイン コントローラーのいずれかになります。
2015年11月8日編集
すべての更新を適用しましたが、違いはありませんでした。新しいテスト サーバーとドメイン コントローラーの DNS 設定の間に構成の違いがあるかどうかを再確認しましたが、違いはありました。ドメイン コントローラーにはフォワーダーが設定されていました。
最初のテストではフォワーダーありとなしで試したことは確かですが、dig
Linux マシンからのみ試しました。Windows マシンで nslookup を使用すると、フォワーダー設定の有無で結果が若干異なります (Google、OpenDNS、4.2.2.1、および ISP DNS サーバーで試しました)。
フォワーダーを設定すると、次のようになりますServer failed
。
フォワーダーがないと(ルート DNS サーバーを使用するため)、次のようになりますNo IPv6 address (AAAA) records available for smtpgw1.gov.on.ca
。
しかし、それでも IPv6 レコードを持たない他のドメインで得られる結果とは異なります。Windows の nslookup では、他のドメインに対しては結果が返されません。
フォワーダーの有無にかかわらず、Windows DNS サーバーを照会すると、その名前がdig
表示されます。SERVFAIL
Windows DNS サーバーが関与していない場合でも、問題のあるドメインと他のドメインの間には関連性があると思われる小さな違いがあります。
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 が応答を拒否しているのは、そのためだと思います。mx.atomwide.com の AAAA を要求します。lgfl.org.uk の応答 SOA。この情報で何か進展があるかどうか確認します。編集: 今後の参考までに、「汚染に対する安全なキャッシュ」を一時的にオフにすると、クエリが成功します。理想的ではありませんが、問題が疑わしい DNS レコードにあることが証明されます。RFC4074 も参考になります - 概要とセクション。
答え2
によるとKB832223
原因
この問題は、Windows Server DNS でサポートされている DNS の拡張メカニズム (EDNS0) 機能が原因で発生します。
EDNS0 では、より大きなサイズのユーザー データグラム プロトコル (UDP) パケットが許可されます。ただし、一部のファイアウォール プログラムでは、512 バイトを超える UDP パケットが許可されない場合があります。そのため、これらの DNS パケットはファイアウォールによってブロックされる可能性があります。
Microsoft の解決策は次のとおりです。
解決
この問題を解決するには、ファイアウォール プログラムを更新して、512 バイトを超える UDP パケットを認識して許可するようにします。これを行う方法の詳細については、ファイアウォール プログラムの製造元に問い合わせてください。
Microsoft はこの問題を回避するために次の提案をしています。
回避策
この問題を回避するには、Windows ベースの DNS サーバーで EDNS0 機能を無効にします。これを行うには、次の操作を実行します。
コマンド プロンプトで次のコマンドを入力し、Enter キーを押します。
dnscmd /config /enableednsprobes 0
注意 このコマンドの「enableednsprobes」の後に文字「O」ではなく、0 (ゼロ) を入力してください。