ENDS Options in dig

以下のバージョンを使ってます。

$ dig -v
DiG 9.11.0rc1

ちょっと違うけど以下も参考になる。

Release Notes for BIND Version 9.11.0b3 http://ftp.swin.edu.au/isc/bind9/9.11.0b3/RELEASE-NOTES-bind-9.11.0b3.htmlarrow-up-right

$HOME/.digrc には +nocookie だけ書いてる。 (COOKIE が入っているものは、 .digrc を書き換えていなかったときのもの)

+bufsize=###

EDNS による UDP ペイロードサイズの拡張。 TCP フォールバックせずに大きいサイズの応答を受け取れる。

+[no]edns[=###]

(EDNS バージョンを指定して) EDNS クエリを投げる。

edns=1 を指定

$ dig yokohei.com +qr +edns=1

; <<>> DiG 9.11.0rc1 <<>> yokohei.com +qr +edns=1
;; global options: +cmd
;; Sending:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45859
;; flags: rd ad; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 1, flags:; udp: 4096
;; QUESTION SECTION:
;yokohei.com.			IN	A

;; QUERY SIZE: 40
...

バージョン未指定

version 0 が使われる。

+ednsflags=###

EDNS Flag bit を指定。

6.1.4. Flags https://tools.ietf.org/html/rfc6891#section-6.1.4arrow-up-right

DO DNSSEC OK bit as defined by [RFC3225].

Z Set to zero by senders and ignored by receivers, unless modified in a subsequent specification.

この Z に値を入れるみたい。 DO を指定するためのオプションではない。

pcap 結果はこんな感じ

+[no]ednsnegotiation

EDNS バージョンネゴシエーションを有効化するか否か。

+ednsneg のとき、 EDNS0 でリトライする。

+noednsneg のとき、 EDNS0 でリトライしない。

リトライの挙動を理解するため dig の実装を読む。

https://github.com/isc-projects/bind9/blob/755efa9b187696d0de6f341e1dbfbb7e2a437d53/bin/dig/dighost.c#L3747arrow-up-right

newedns を使ってリクエリ。 newedns とは何か、というと BADVERS を返すときに使われた EDNS バージョン。 なるほど。

+ednsopt=###[:value]

EDNS Option Code の指定。

DNS EDNS0 Option Codes (OPT) https://www.iana.org/assignments/dns-parameters/dns-parameters.xml#dns-parameters-11arrow-up-right

例えば opt code 3 の nsid を指定すると、以下のようになる。

pcap 結果

Last updated