あたらしい dig
アカマイ・テクノロジーズ合同会社
シニア・ソリューションズエンジニア
松本 陽⼀

1

© 2023 Akamai Technologies

発表 2023 年 6 ⽉ 23 ⽇
資料(修正) 2023 年 6 ⽉ 26 ⽇

このプレゼンテーションにおいてなされる記述は作成者個⼈の⾒解を⽰すものであり、アカマイ・テクノロジーズの⾒解を⽰すものではありません。提供される情報は作成時点において正確なものであると考えておりますが、当該情報についてなんら表明⼜は保証を⾏いません。

2© 2023 Akamai Technologies

いきなりですが、ごめんなさい (>_<)• 「次世代の dig 」とかいう話ではありません• dig の最新機能の解説でもありません3© 2023 Akamai Technologies

dig• DNS のふるまいを表現する事実上の標準語• みんなが知っている• 多くの環境でデフォルトで⽤意されている• ⼀⽅で、気になる点も…
• ⾃分がどんなクエリを出しているのかがわかりにくい• デフォルト動作がわかりにくい(デフォルト動作に開発者の思いが反映されている︖)

4© 2023 Akamai Technologies

話が通じない例
A:「dig でエラーが返ってくるんですけど。」
B:「ちゃんとアンサー返ってきますが。」↓• A と B の使っている dig のバージョンが違った( dig は 9.11.0 あたりからデフォルトで DNS cookie をつけるようになった。 )• このネームサーバは未知の EDNS オプションを受け取るとFORMERR を返していた
dig の開発者は DNS cookie を普及させたい︖
5© 2023 Akamai Technologies

クエリに cookie がついていたことはコマンド出⼒からは分からない% dig @XXX.XX.XXX.XX example.com +norecurse; <<>> DiG 9.18.15 <<>> @XXX.XX.XXX.XX example.com +norecurse; (1 server found);; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44953;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1;; OPT PSEUDOSECTION:; EDNS: version: 0, flags:; udp: 4096;; QUESTION SECTION:;example.com.
;; ANSWER SECTION:
example.com.
XX.XXX.XXX.XX

86400

IN

A

INA;; Query time: 121 msec;; SERVER: XXX.XX.XXX.XX#53(XXX.XX.XXX.XX) (UDP);; WHEN: Sun Jun 18 12:00:00 JST 2023;; MSG SIZE rcvd: 56%6© 2023 Akamai Technologies(サーバが cookie に対応しておらず) レスポ
ンスに cookie がない場合、クエリに cookieがあったことに気づけない% dig @XXX.XX.XXX.XX example.com +norecurse +qr; <<>> DiG 9.18.15 <<>> @XXX.XX.XXX.XX example.com +norecurse +qr; (1 server found);; global options: +cmd;; Sending:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25308;; flags: ad; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

クエリも表⽰するオプション;; OPT PSEUDOSECTION:; EDNS: version: 0, flags:; udp: 1232; COOKIE: 4010bedff8bdfc31;; QUESTION SECTION:;example.com.

IN

A;; QUERY SIZE: 52;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25308;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1;; OPT PSEUDOSECTION:; EDNS: version: 0, flags:; udp: 4096;; QUESTION SECTION:;example.com.
;; ANSWER SECTION:
example.com.
(以下略)7© 2023 Akamai Technologies

86400+qr オプションININA

A

XX.XXX.XXX.XX( QR ビットの指定ではない )あれ︖という例% dig @X.X.X.X XXXX.XXX ANY +noanswer; <<>> DiG 9.16.41 <<>> @X.X.X.X XXXX.XXX ANY +noanswer;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31887;; flags: qr rd ra; QUERY: 1, ANSWER: 40, AUTHORITY: 0, ADDITIONAL: 1;; OPT PSEUDOSECTION:; EDNS: version: 0, flags:; udp: 512;; QUESTION SECTION:;XXXX.XXX.
;; Query time: 1 msec;; SERVER: X.X.X.X#53(X.X.X.X);; WHEN: Sun Jun 18 12:00:00 JST 2023;; MSG SIZE rcvd: 3800%

8© 2023 Akamai Technologies

INANY

レスポンス・メッセージ・サイズ
が⼤きいと Truncate (TC=1)が返ってくるんじゃなかったっけ︖

ANY クエリでは TCP がデフォルト+tcp, +notcp
This option indicates whether to use TCP when querying nameservers. The default behavior is to use UDP unless a type any orixfr=N query is requested, in which case the default is TCP. AXFR
queries always use TCP. To prevent retry over TCP when TC=1 isreturned from a UDP query, use +ignore.

• クエリタイプ ANY のときは TCP がデフォルト• +ignore をつけないと TC=1 が返るとTCP で再試⾏
Truncate (TC=1) のレスポンスを確認するには +notcp と+ignore をつける必要があった。
9© 2023 Akamai Technologies

dig のコマンドライン・オプションは全部おさえておきたいなぁ
man ページを⾒ると…
BUGS
There are probably too many query options.

しかもアルファベット順…。わかりやすく整理したい︕

10© 2023 Akamai Technologies

dig のコマンドライン・オプションを整理
バージョン 9.18.15
man ページまたは dig -h で列挙されるオプション ( -X / +XXX /@)[no] は省略• トランスポート ( L3 / L4 / DoH / DoT )• 再送、タイムアウト、フォールバック• クエリの内容の指定 ( ⼀般 / TSIG / EDNS / 特殊な指定の仕⽅ )
• 表⽰
• その他
11

© 2023 Akamai Technologies

トランスポート等
L3 / L4-4-6@server-p port-b address[#port]+tcp / +vc+keepopen+https[=###] /+https-post[=###]+https-get[=###]+http[=###] /+http-post[=###]+http-get[=###]+tls+tls-hostname=hostname+tls-ca[=###]+tls-certfile=file+tls-keyfile=file12© 2023 Akamai Technologies

再送 / タイムアウト /フォールバック

DoH / DoT+tries=###+retry=###+timeout=###+ignore+failクエリの内容 ( ⼀般 / TSIG )⼀般+qid=###TSIG+header-only+opcode=###-q name+aaflag / +aaonly-t type+tcflag-c class+rdflag / +recurse+raflag+zflag+adflag+cdflag13© 2023 Akamai Technologies-k keyfile-y[hmac:]keyname:secret+fuzztime[=###]

クエリの内容 ( EDNS / 特殊な指定 )EDNS

特殊な指定のしかた
オプション+bufsize[=###]+nsid (3)-f file+edns[=###]+ednsnegotiation+subnet=addr[/prefixlength] (8)+domain=###+do / +dnssec+expire (9)+ednsflags[=#]+cookie[=####] (10)+badcookie+showbadcookie+keepalive (11)+padding (12)+dnsopt[=code[:value]]14© 2023 Akamai Technologies+search / +defname+ndots=###-x addr+dns64prefix

表⽰
部分の選択

フォーマットの選択+all-u+qr+cmd+ttiunits+showsearch+comments+expandaaaa+ttlid+question+unknownformat+class+answer+multiline+rrcomments+authority+split=##+onesoa+additional+crypto+besteffort+stats表⽰全体の形式を変更+short+identify

15

その他© 2023 Akamai Technologies

+yaml

その他
国際化ドメイン(IDN)

Obsolete (効果なし)+idnin-v+sigchase+idnout-h+topdown-r+trusted-key=###-m+dscp[=###]

特別な動作(⼀連の複数種類のクエリ)+trace+nssearch

16

その他

© 2023 Akamai Technologies

「あたらしい」こと︖
9.18.0 のリリースノートより「dig output now includes the transport protocol used
(UDP, TCP, TLS, HTTPS).」;; Query time: 1 msec;; SERVER: X.X.X.X#53(X.X.X.X) TCP;; WHEN: Sun Jun 18 12:00:00 JST 2023;; MSG SIZE rcvd: 3800

前述の「あれ︖」に関しても、9.18.0 以降ならTCP でのレスポンスが表⽰されていることに気づけたかも17© 2023 Akamai Technologies

まとめ18© 2023 Akamai Technologies

19© 2023 Akamai Technologies