Windows Server の DNS のデバッグログについて


Windows Server 2012 で DNS デバッグログの場所と読み方の自分用備忘録です。

DNS サーバーのデバッグ ログ オプションを選択および有効にするには

デフォルトの出力先

デバッグログ出力先を特に指定しない場合、以下の場所に出力されます。

C:\Windows\System32\dns\dns.log

読み方

ログファイルの先頭に各フィールドの一応意味が書いてありますが、一部 DNS に詳しくないとわからないものがあります。以下のリンク先の記事を読むとある程度わかるようになります。それにしてもドキュメントが見つからないので苦労します。
DNSプロトコルのヘッダセクションのフォーマット
以下の解説っぽいのは想像を含みますので、信頼度は低いです。

fields):
    Field #  Information         Values
    -------  -----------         ------
       1     Date
       2     Time
       3     Thread ID
       4     Context
       5     Internal packet identifier
       6     UDP/TCP indicator
       7     Send/Receive indicator
       8     Remote IP
       9     Xid (hex)
      10     Query/Response      R = Response
                                 blank = Query
      11     Opcode              Q = Standard Query
                                 N = Notify
                                 U = Update
                                 ? = Unknown
      12     [ Flags (hex)
      13     Flags (char codes)  A = Authoritative Answer
                                 T = Truncated Response
                                 D = Recursion Desired
                                 R = Recursion Available
      14     ResponseCode ]
      15     Question Type
      16     Question Name

2019/08/20 11:48:27 0BE4 PACKET  000000149B80B390 UDP Rcv 8.8.8.8 
  ccfb R Q [0581   D   REFUSED] A      (6)google(3)com(0)

6の「UDP/TCP indicator」は UDP か TCP がセットされると思いますが、UDP しか見たことがないです。DNS の仕様だと UDP のサイズには制限があり、応答でそのサイズを超える場合は、TCP を使うようです。サイズは時代とともに増やされ今はサーバー毎バラバラらしいです。

7の「Send/Receive indicator」は Send の場合「Snd」、Receive の場合は「Rcv」になります。

12と13の「Flags」は16bitのフラグを4つの10進数で表現したのが12でそれを文字で表すと13になると思われます。

14の「ResponseCode」には「NOERROR」や「REFUSED」「NXDOMAIN」などDNS Update Message Flagsの名称がセットされます。

15の「Question Type」は「A」や「CN」などを意味します。

16の「Question Name」は問い合わせをしたドメイン名です。カッコ内の数字はその後に続く文字列の文字数です。

感想

DNS は古い技術ですがいろいろ調べると面白いかもしれません。(調べるとは言っていない)