web-dev-qa-db-ja.com

DNS SERVFAILとTCP経由の不正なフラグ:壊れたDNSサーバー?

別のドメインを指すCNAMEルックアップの追加セクションでルートネームサーバーを返すのは不適切な構成ですか?特に私がこれを見ているのは、Network SolutionsによってホストされているCNAMEであり、CNAMEは別のドメインとTLDを指しています。

これらの追加レコードはすべてUDPパケットのサイズを超えてしまい、クエリをTCPで再実行する必要があるため、これが不適切な構成であるかどうかを確認します。

Dig www.unitedstatesartists.org +trace

ネームサーバーの応答:

example.org. 86400  IN      NS      ns15.worldnic.com.
example.org. 86400  IN      NS      ns16.worldnic.com.
;; Received 95 bytes from 199.249.120.1#53(b2.org.afilias-nst.org) in 79 ms

;; Warning: Message parser reports malformed message packet.
;; Truncated, retrying in TCP mode.
www.example.org. 7200 IN    CNAME   load-01-123.us-west-1.elb.amazonaws.com.
.  518400  IN      NS      a.root-servers.net.
.  518400  IN      NS      b.root-servers.net.
.  518400  IN      NS      c.root-servers.net.
.  518400  IN      NS      d.root-servers.net.
.  518400  IN      NS      e.root-servers.net.
.  518400  IN      NS      f.root-servers.net.
.  518400  IN      NS      g.root-servers.net.
.  518400  IN      NS      h.root-servers.net.
.  518400  IN      NS      i.root-servers.net.
.  518400  IN      NS      j.root-servers.net.
.  518400  IN      NS      k.root-servers.net.
.  518400  IN      NS      l.root-servers.net.
.  518400  IN      NS      m.root-servers.net.
;; Received 526 bytes from 205.178.190.8#53(ns15.worldnic.com) in 173 ms

追加のレコードを返すかどうかはランダムです。追加が返されない場合でも、応答が切り捨てられ、DigがTCPで再試行することがあります。

example.org. 86400  IN      NS      ns15.worldnic.com.
example.org. 86400  IN      NS      ns16.worldnic.com.
;; Received 95 bytes from 199.19.56.1#53(a0.org.afilias-nst.info) in 82 ms

;; Warning: Message parser reports malformed message packet.
;; Truncated, retrying in TCP mode.
www.example.org. 7200 IN    CNAME   load-01-123.us-west-1.elb.amazonaws.com.
;; Received 107 bytes from 205.178.190.8#53(ns15.worldnic.com) in 164 ms

更新2010-12-08

より多くのテストが見つかりました:

  • Network Solutionsは、再帰クエリ(+ traceでない場合はDigのデフォルト)を使用してSERVFAIL(サーバー障害)で応答しますが、それでも正しい答えを返します。
  • Digの+ norecurseの設定は正常に機能しますが、常に機能するとは限りません。 SERVFAILが返されることがあります---良くありません。おそらく理由の詳細は以下に続きます
  • Network Solutionsが権限のある追加セクションにルートサーバーを含めると、UDPが切り捨てられ、完了するにはTCP)が必要になります。

次のキャプチャの概要:

  • Ns15からの非再帰的要求レコード
  • ns15の回答には、認証および追加のルートサーバーが含まれ、応答を切り捨てられたものとしてマークします
  • 非再帰的リクエストは、UDPが切り捨てられたため、TCP)で再試行されます
  • TCP)を使用したns15からの同様の回答。ただし、「再帰が必要」が正しく設定されておらず、「サーバー障害」コードも設定されている

私たちはすでに彼らと一緒にチケットを作成しましたが、それがどこにでも行くかどうかを確認します。以下は、以前のtsharkの詳細からのDNSパケットです。

最初の質問(UDP経由):

Domain Name System (query)
    Transaction ID: 0x27ef
    Flags: 0x0000 (Standard query)
        0... .... .... .... = Response: Message is a query
        .000 0... .... .... = Opcode: Standard query (0)
        .... ..0. .... .... = Truncated: Message is not truncated
        .... ...0 .... .... = Recursion desired: Don't do query recursively
        .... .... .0.. .... = Z: reserved (0)
        .... .... ...0 .... = Non-authenticated data OK: Non-authenticated data is unacceptable

最初の回答(UDP経由):

Domain Name System (response)
    [Request In: 1]
    [Time: 0.078623000 seconds]
    Transaction ID: 0x27ef
    Flags: 0x8600 (Standard query response, No error)
        1... .... .... .... = Response: Message is a response
        .000 0... .... .... = Opcode: Standard query (0)
        .... .1.. .... .... = Authoritative: Server is an authority for domain
        .... ..1. .... .... = Truncated: Message is truncated
        .... ...0 .... .... = Recursion desired: Don't do query recursively
        .... .... 0... .... = Recursion available: Server can't do recursive queries
        .... .... .0.. .... = Z: reserved (0)
        .... .... ..0. .... = Answer authenticated: Answer/authority portion was not authenticated by the server
        .... .... .... 0000 = Reply code: No error (0)

2番目の質問(TCP経由):

Domain Name System (query)
    Length: 56
    Transaction ID: 0xbc37
    Flags: 0x0000 (Standard query)
        0... .... .... .... = Response: Message is a query
        .000 0... .... .... = Opcode: Standard query (0)
        .... ..0. .... .... = Truncated: Message is not truncated
        .... ...0 .... .... = Recursion desired: Don't do query recursively
        .... .... .0.. .... = Z: reserved (0)
        .... .... ...0 .... = Non-authenticated data OK: Non-authenticated data is unacceptable

2番目の答え(TCP経由で、「再帰の欲求」に注意してください):

Domain Name System (response)
    [Request In: 6]
    [Time: 0.147357000 seconds]
    Length: 107
    Transaction ID: 0xbc37
    Flags: 0x8102 (Standard query response, Server failure)
        1... .... .... .... = Response: Message is a response
        .000 0... .... .... = Opcode: Standard query (0)
        .... .0.. .... .... = Authoritative: Server is not an authority for domain
        .... ..0. .... .... = Truncated: Message is not truncated
        .... ...1 .... .... = Recursion desired: Do query recursively
        .... .... 0... .... = Recursion available: Server can't do recursive queries
        .... .... .0.. .... = Z: reserved (0)
        .... .... ..0. .... = Answer authenticated: Answer/authority portion was not authenticated by the server
        .... .... .... 0010 = Reply code: Server failure (2)
1
Rob Olmos

はい、構成や実装が不十分です。権限のあるサーバーが、それ以外の場合は有効な応答でルート参照を返す理由はありません。

さらに、これら2つのWorldnicサーバーからは発生してはならない他のエラーが発生しています。

  • rightの答えが返されることもありますが、SERVFAILエラーコードがあり、AAビットが設定されていません。

  • EDNS0( RFC 2671 )が指定されている場合でも、UDP応答は常に512バイトで切り捨てられます。これは、DNSSECがこのネームサーバーでは機能しないことを意味します

  • 問題となるのはADDITIONALセクションだけではなく、信頼できる(AUTHORITYビットセット)回答のAAセクションにルートネームサーバーを配置することです。

5
Alnitak