Linux便利コマンド : dig

うめだ
2023-07-10
2023-07-10
目次

はじめに

みなさま、digコマンドをご存じですか。

ドメインからIPアドレス(正引き)、IPアドレスからドメイン(逆引き)といった名前解決を行うができるコマンドです。

同じようなコマンドとして、nslookupがありますが、私はdigを利用しています。nslookupはネームサーバーからの応答を見やすい形に加工して表示するようで、より正確な情報にこだわるのであればdigの方が良いのかもしれません。

それでは、私がいつも指定しているオプション含めて、使い方を紹介します。

環境

OS : AlmaLinux 8
digバージョン : 9.11

使い方

使い方はとても簡単です。

dig ドメイン名

引数として、名前解決したいドメイン名を指定して、実行します。これで正引きができます。

 $ dig google.co.jp

; <<>> DiG 9.11.36-RedHat-9.11.36-5.el8_7.2 <<>> google.co.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7594
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.co.jp.                  IN      A

;; ANSWER SECTION:
google.co.jp.           182     IN      A       142.250.207.99

;; Query time: 0 msec
;; SERVER: 219.99.xxx.x#53(219.99.xxx.x)
;; WHEN: Sun Jul 09 17:21:22 JST 2023
;; MSG SIZE  rcvd: 57

$

逆引きの場合は、dig -x IPアドレス と指定します。

 $ dig -x 142.250.207.99

; <<>> DiG 9.11.36-RedHat-9.11.36-5.el8_7.2 <<>> -x 142.250.207.99
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27911
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;99.207.250.142.in-addr.arpa.   IN      PTR

;; ANSWER SECTION:
99.207.250.142.in-addr.arpa. 86400 IN   PTR     kix06s11-in-f3.1e100.net.

;; Query time: 177 msec
;; SERVER: 219.99.xxx.x#53(219.99.xxx.x)
;; WHEN: Sun Jul 09 17:23:45 JST 2023
;; MSG SIZE  rcvd: 94

$

いかがですか? 個人的には表示される情報をもっとシンプルにしたいので、 +short オプションを活用しています。

$ dig +short google.co.jp
172.217.25.163
$

$ dig +short -x 142.250.207.99
kix06s11-in-f3.1e100.net.
$

とてもシンプルですよね。

日々の運用業務でdigを活用していますが、特に活用しているのが、ネームサーバーをリプレイスする際の、DNSレコード設定確認です。

dig @リプレイス前ネームサーバー +short example.co.jp a
dig @リプレイス後ネームサーバー +short example.co.jp a

表示された値が同じであれば、リプレイス後のネームサーバーにも必要なDNSレコードが登録されているということになります。

現状設定されているDNSレコードに対して、リプレイス後のネームサーバーに対して名前解決を行い、想定通りの値が返ってくことが確認できれが、安心して、ネームサーバーのリプレイスを行うことができますね。

参照したいドメインとレコードタイプの一覧を記述したファイルを指定することで、一括で名前解決できます。

例)
$ dig @リプレイス前ネームサーバー example.co.jp axfr | awk '{print $1" "$4}' > dig.txt
$ dig @リプレイス前ネームサーバー +short -f ./dig.txt > dig_a.txt
$ dig @リプレイス後ネームサーバー +short -f ./dig.txt > dig_b.txt
$ diff dig_a.txt dig_b.txt
$

最後のdiffで差分が出力されなければ、ALL OK です。

まとめ

いかがでしたか?

+short や -f でのファイル指定など、色々活用できると思います。ぜひともお試しください。