digのDNSクエリについて:digはZフィールドにゼロ以外の値を設定しますか?

digのDNSクエリについて:digはZフィールドにゼロ以外の値を設定しますか?

送信されたDNSクエリを再確認すると、digRFCステータスに奇妙な点があることがわかりました。 DNSプロトコルのさまざまなバリエーションについてはわかりませんが、RFC 1035では

Z:将来の使用のために予約されています。すべてのクエリと応答でゼロでなければなりません。

これは、デバッグモードのEclipse IDEからエクスポートされた受信DNSクエリのメモリ内スナップショットです。

00000000   F5 F4 01 20  00 01 00 00  00 00 00 01  03 77 77 77  06 67 6F 6F  67 6C 65 03  63 6F 6D 00  00 01 00 01  00 00 29 10  00 00 00 00  ... .........www.google.com.......).....
00000028   00 00 0C 00  0A 00 08 1F  0A 12 91 67  67 B0 B9                                                                                   ...........gg..

そのビットをDNSフィールドにマッピングする(RFC 1035で)

F5F4-> DNSトランザクションID。

01-> QR、演算コード、AA、TC、RD

20-> 00100000 => RA-> 0, Z-> 010

Zはいまたはいいえ0です!digDNSバリアントが存在する場合、他のDNSバリアントが使用されますか?それとも問題と見なされるべきですかdig

答え1

DNSはさまざまなバリエーションではありませんが、このトピックのRFC 1035はRFC2535「DNSセキュリティ拡張」によって改訂されました。

セクション 6.1 にメッセージ形式を示します。


                                           1  1  1  1  1  1
             0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
            |                      ID                       |
            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
            |QR|   Opcode  |AA|TC|RD|RA| Z|AD|CD|   RCODE   |
            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
            |                    QDCOUNT                    |
            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
            |                    ANCOUNT                    |
            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
            |                    NSCOUNT                    |
            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
            |                    ARCOUNT                    |
            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

ご覧のとおり、既存の3桁のZフィールドはZ、AD、CDに分かれています。

したがって、0x20= は0b00100000次のように分割されます。

  • RA = 0:このメッセージに応答するサーバーは再帰を実行できません。
  • Z = 0:期待通りに0でなければなりません。
  • AD = 1:「回答の回答と権限の一部に含まれるすべてのデータは、そのサーバーのポリシーに従ってサーバーによって認証されました。」
  • CD = 0:checkは無効になっていません(応答ではなくクエリで「クエリを送信するパーサが保留中の(認証されていない)データを受け入れることができます」と定義されていることを意味します。)
  • RCODE = 0:エラーなし

DNS 仕様は複雑でしばしば曖昧で、多くの文書に分散しています。この最近の仕事は道を見つけるのに役立ちます。 https://powerdns.org/hello-dns/

関連情報