digコマンドを使うと、ドメイン名問い合わせパケットをネームサーバに送ることが出来ます。
Cent OSであればbind-utils
パッケージをインストールすることでdigコマンドが使えます
$ yum install bind-utils
Ubuntuであればdnsutils
パッケージをインストールします
$ apt-get install dnsutils
bashなどでdig google.com @8.8.8.8
を実行してみましょう
$ dig google.com @8.8.8.8
; <<>> DiG 9.11.20-RedHat-9.11.20-5.el8_3.1 <<>> google.com @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53873
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 299 IN A 172.217.24.142
;; Query time: 40 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: 月 3月 29 01:22:26 JST 2021
;; MSG SIZE rcvd: 55
digコマンドは、ネームサーバが期待どおりに動いているか確かめるために役立つので、使えるようになると良いでしょう
先程の例では、8.8.8.8
で動作しているネームサーバにgoogle.com
の名前解決をリクエストしました
8.8.8.8
で動作しているのはGoogle Public DNSで、Googleが公開しているDNSキャッシュサーバです。
また、-x
オプションで逆引き出来ます。
以下の例では、dns.google.
に関連付けられているIPv4アドレスの1つに8.8.8.8
があることが分かりました。
$ dig -x 8.8.8.8
; <<>> DiG 9.16.12 <<>> -x 8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34129
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;8.8.8.8.in-addr.arpa. IN PTR
;; ANSWER SECTION:
8.8.8.8.in-addr.arpa. 20770 IN PTR dns.google.
@で指定するのはIPアドレスにするとよいでしょう
$ dig google.com @ns1.google.com
のように実行できますが、暗黙的にns1.google.com
を解決しています
これでは、どのようにns1.google.com
を名前解決して、どのサーバにリクエストしたのかが分からなくなってしまいます