LoginSignup
29
25

More than 5 years have passed since last update.

DNS確認で使うdigコマンド(個人的によく使うコマンドオプション編)

Last updated at Posted at 2016-10-28

digのコマンドオプション編(1)

割とよく使うオプションと使いかた

適当なゾーンをローカルで作成して例にしています

以降のサンプルで使用するexample.hogeをdigで普通に叩いた時の結果がこちら
この情報を覚えつつ以降で登場するオプションの結果を比較するとわかりやすいかも

# dig example.hoge

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.2 <<>> example.hoge
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49563
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;example.hoge.          IN  A

;; ANSWER SECTION:
example.hoge.       300 IN  A   127.0.0.102
example.hoge.       300 IN  A   127.0.0.100
example.hoge.       300 IN  A   127.0.0.101

;; AUTHORITY SECTION:
example.hoge.       300 IN  NS  ns.example.hoge.
example.hoge.       300 IN  NS  ns2.example.hoge.

;; ADDITIONAL SECTION:
ns.example.hoge.    300 IN  A   104.131.17.10
ns2.example.hoge.   300 IN  A   104.131.83.96

;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Oct 28 05:55:53 2016
;; MSG SIZE  rcvd: 145

Query Option

コマンドのバージョンで挙動が異なる可能性があります
よく使われていそうなRHELのバージョンで例にしております

# dig -v
DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.2

+short

Answer Sectionの答えのみを表示する

# dig +short example.hoge
127.0.0.102
127.0.0.100
127.0.0.101

+noall (それの組み合わせ)

出力を非表示(にして表示させたい項目を絞る)

+noallだけ
何も表示されません

# dig +noall example.hoge
#

組み合わせてみる

authority sectionだけ出す

# dig +noall +auth example.hoge
example.hoge.       300 IN  NS  ns2.example.hoge.
example.hoge.       300 IN  NS  ns.example.hoge.

answer sectionを抜き出す

# dig +noall +ans example.hoge
example.hoge.       300 IN  A   127.0.0.102
example.hoge.       300 IN  A   127.0.0.100
example.hoge.       300 IN  A   127.0.0.101

ちなみに+オプションの位置によってコメントが表示されてしまう
(コマンドのソースを見てないので意図的なものかは未確認)

# dig example.hoge +noall +ans

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.2 <<>> example.hoge +noall +ans
;; global options: +cmd
example.hoge.       300 IN  A   127.0.0.102
example.hoge.       300 IN  A   127.0.0.100
example.hoge.       300 IN  A   127.0.0.101

さらに応答がない(NXDOMAINなど)の場合は何も応答が返ってこないので
この様な結果になる事は事前に覚えておきましょう

# dig +noall +ans  @104.131.17.10 hoge.example.hoge
#

無いと思うけどこの部分だけを抜き出す

# dig +noall +cmd example.hoge

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.2 <<>> +noall +cmd example.hoge
;; global options: +cmd

+nssearch

NSに登録されている全サーバからSOAを取得してきてくれる
セカンダリを自前で運用していない場合など、
ゾーン転送ができているかなどを確認する場合に便利
1 NS毎でdig soaをする必要がない

# dig example.hoge +nssearch
SOA example.hoge. info.example.hoge. 2016101102 3600 900 604800 300 from server 104.131.17.10 in 0 ms.
SOA example.hoge. info.example.hoge. 2016101102 3600 900 604800 300 from server 104.131.83.96 in 10 ms.

次でtcpの話もするがtcpが通らないNSは表示ができない

# dig example.hoge +nssearch
SOA example.hoge. info.example.hoge. 2016101104 3600 900 604800 300 from server 104.131.17.10 in 0 ms.
;; connection timed out; no servers could be reached

+tcp

tcpで問い合わせをする
たまにtcpを塞いでしまってる人がいるので確認に使う
tcpが通らないとゾーン転送もできないのでこれで確認とか

# dig +noall +ans example.hoge +tcp @ns2.example.hoge.
example.hoge.       300 IN  A   127.0.0.101
example.hoge.       300 IN  A   127.0.0.102
example.hoge.       300 IN  A   127.0.0.100

tcpでの名前解決ができない場合

# dig example.hoge +tcp @ns2.example.hoge.

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.2 <<>> example.hoge +tcp @ns2.example.hoge.
;; global options: +cmd
;; connection timed out; no servers could be reached

+trace

ServFailなどの時にルートゾーンから辿ってどこでコケているかなど探る時に便利です
yahoo.co.jpさんのドメインで例

# dig yahoo.co.jp +trace

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.2 <<>> yahoo.co.jp +trace
;; global options: +cmd
.           517703  IN  NS  c.root-servers.net.
.           517703  IN  NS  i.root-servers.net.
.           517703  IN  NS  l.root-servers.net.
.           517703  IN  NS  g.root-servers.net.
.           517703  IN  NS  f.root-servers.net.
.           517703  IN  NS  k.root-servers.net.
.           517703  IN  NS  a.root-servers.net.
.           517703  IN  NS  d.root-servers.net.
.           517703  IN  NS  e.root-servers.net.
.           517703  IN  NS  b.root-servers.net.
.           517703  IN  NS  h.root-servers.net.
.           517703  IN  NS  j.root-servers.net.
.           517703  IN  NS  m.root-servers.net.
;; Received 508 bytes from 127.0.0.1#53(127.0.0.1) in 9 ms

jp.         172800  IN  NS  c.dns.jp.
jp.         172800  IN  NS  b.dns.jp.
jp.         172800  IN  NS  g.dns.jp.
jp.         172800  IN  NS  d.dns.jp.
jp.         172800  IN  NS  f.dns.jp.
jp.         172800  IN  NS  a.dns.jp.
jp.         172800  IN  NS  e.dns.jp.
;; Received 425 bytes from 192.228.79.201#53(192.228.79.201) in 1177 ms

yahoo.co.jp.        86400   IN  NS  ns02.yahoo.co.jp.
yahoo.co.jp.        86400   IN  NS  ns01.yahoo.co.jp.
yahoo.co.jp.        86400   IN  NS  ns11.yahoo.co.jp.
yahoo.co.jp.        86400   IN  NS  ns12.yahoo.co.jp.
;; Received 169 bytes from 150.100.6.8#53(150.100.6.8) in 850 ms

yahoo.co.jp.        300 IN  A   182.22.59.229
yahoo.co.jp.        300 IN  A   183.79.135.206
yahoo.co.jp.        900 IN  NS  ns02.yahoo.co.jp.
yahoo.co.jp.        900 IN  NS  ns11.yahoo.co.jp.
yahoo.co.jp.        900 IN  NS  ns12.yahoo.co.jp.
yahoo.co.jp.        900 IN  NS  ns01.yahoo.co.jp.
;; Received 201 bytes from 118.151.254.149#53(118.151.254.149) in 154 ms

Option

axfr

Slave側で使ったりします
axfrがdigで叩いて通ればゾーン転送要求が通っている事になるので
だいたいはゾーン転送はうまくいくはず

ちなみにSlaveとして想定していないサーバからマスターの権威に
このコマンドが通ると情報が不正に見えてしまったりするので
allow-transferなどで制限したほうがよい

https://jprs.jp/tech/security/2016-01-12-unauthorized-zone-transfer.html

# dig +noall +ans example.hoge @ns2.example.hoge. axfr
example.hoge.       300 IN  SOA example.hoge. info.example.hoge. 2016101104 3600 900 604800 300
example.hoge.       300 IN  NS  ns.example.hoge.
example.hoge.       300 IN  NS  ns2.example.hoge.
example.hoge.       300 IN  A   127.0.0.100
example.hoge.       300 IN  A   127.0.0.101
example.hoge.       300 IN  A   127.0.0.102
ns.example.hoge.    300 IN  A   104.131.17.10
ns2.example.hoge.   300 IN  A   104.131.83.96
www.example.hoge.   300 IN  A   127.0.0.10
example.hoge.       300 IN  SOA example.hoge. info.example.hoge. 2016101104 3600 900 604800 300

おまけ

OpenRecursiveじゃないか確認しよう

http://www.openresolver.jp
サイトをご利用した際に生じたいかなる損害についても責任を負いません・・・

version.bind

セキュリティのためにも利用しているバージョン情報は空にするか
適当に文字を入れましょう

以下はバージョンが見えてしまっている場合
最近は脆弱性の攻撃コードが直ぐにインターネット上にアップロードされたりするので危険です

# dig +noall +ans  @104.131.17.10 chaos txt version.bind
version.bind.       0   CH  TXT "9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.2"

隠蔽処理をしたやつ
bindの場合はoptionにversion none;を設定すれば情報が消えます

# dig @104.131.17.10 chaos txt version.bind

;; QUESTION SECTION:
;version.bind.          CH  TXT

好きな文字も可能です

# dig +noall +ans  @104.131.17.10 chaos txt version.bind
version.bind.       0   CH  TXT "I am DNS Server!"

その他

本当はヘッダのStatus欄やflagも有用な情報なので気にすると幸せになれます

29
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
25