現在携わっている業務でDNSのパフォーマンス監視を考えていた。 そこで何気なく dig
コマンドのヘルプを呼び出したのだが、面白いものを見つけてしまった。
1 2 3 4 5 6 7 8 ubuntu@basecamp:~$ dig -h | head -2 Usage: dig [@global-server] [domain] [q-type] [q-class] {q-opt} {global-d-opt} host [@local-server] {local-d-opt} (...) +[no]yaml (Present the results as YAML) (...) -h (print help and exit ) -v (print version and exit )
+[no]yaml (Present the results as YAML)
結果をYAMLで返してくれるということか?
早速試してみよう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 ubuntu@basecamp:~$ dig +yaml @ns1.google .com . google.com . soa - type: MESSAGE message: type: AUTH_RESPONSE query_time: !!timestamp 2023 -11 -28 T12:34 :11.745 Z response_time: !!timestamp 2023 -11 -28 T12:34 :11.769 Z message_size: 333 b socket_family: INET socket_protocol: UDP response_address: "216.239.32.10" response_port: 53 query_address: "0.0.0.0" query_port: 0 response_message_data: opcode: QUERY status: NOERROR id: 42342 flags: qr aa rd QUESTION: 1 ANSWER: 1 AUTHORITY: 4 ADDITIONAL: 9 OPT_PSEUDOSECTION: EDNS: version: 0 flags: udp: 512 QUESTION_SECTION: - google.com . IN SOA ANSWER_SECTION: - google.com . 60 IN SOA ns1.google .com . dns-admin.google .com . 589072609 900 900 1800 60 AUTHORITY_SECTION: - google.com . 345600 IN NS ns3.google .com . - google.com . 345600 IN NS ns1.google .com . - google.com . 345600 IN NS ns4.google .com . - google.com . 345600 IN NS ns2.google .com . ADDITIONAL_SECTION: - ns3.google .com . 345600 IN A 216.239 .36.10 - ns3.google .com . 345600 IN AAAA 2001 :4860 :4802 :36 ::a - ns1.google .com . 345600 IN A 216.239 .32.10 - ns1.google .com . 345600 IN AAAA 2001 :4860 :4802 :32 ::a - ns4.google .com . 345600 IN A 216.239 .38.10 - ns4.google .com . 345600 IN AAAA 2001 :4860 :4802 :38 ::a - ns2.google .com . 345600 IN A 216.239 .34.10 - ns2.google .com . 345600 IN AAAA 2001 :4860 :4802 :34 ::a
これまでdigの実行結果を頑張ってパースしたことが何度もあったが、YAMLであればほとんどの言語処理系で自由に扱うことが可能でしょう。
BIND 9.16.0のリリース が2020年の2月ですから、もう4年近く経つわけですが気付いていませんでした。 (気付いてすぐ忘れた可能性もあります…)
ちなみに、 dig には -u
というオプションがあります。
1 -u (display times in usec instead of msec)
-u
オプションを追加すると、
1 2 3 ubuntu @basecamp:~$ dig +yaml -u @ns1 .google.com. google.com. soa | grep -F time query_time : !!timestamp 2023 -11 -29 T13 :30 :07 .868708 Z response_time : !!timestamp 2023 -11 -29 T13 :30 :07 .894514 Z
このように、時刻の表記がミリ秒精度からマイクロ秒精度に変わり、大変便利です。
皆様も楽しいDNS生活をお送りください。