はじめに
みなさま、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 でのファイル指定など、色々活用できると思います。ぜひともお試しください。