Chapter 01

digコマンドを使ってみよう

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を名前解決し、どのサーバにリクエストしたのかが分からなくなります。これでは本末転倒です。