🦊

nslookupとdigで特定のDNSサーバーに問い合わせる方法

に公開

1. はじめに

DNSレコードの設定を変更した際、その結果が反映されるまでには、各DNSキャッシュサーバーのキャッシュが更新されるのを待つ必要があります。とはいうものの、設定が正しく行われたかをすぐに確認したい状況がよくあります。

この記事では、nslookupdigといったコマンドを使い、特定のDNSサーバー(権威DNSサーバーや公開キャッシュDNSサーバーなど)に直接問い合わせることで、名前解決の結果を素早く確認する方法を解説します。

2. nslookupの使い方

nslookupでは、問い合わせたいドメイン名の後に、DNSサーバーのIPアドレスを引数として指定します。

ここでは例として、Googleが提供する公開DNSサーバー 8.8.8.8 を指定して amazon.co.jp のIPアドレスを問い合わせます。

$ nslookup amazon.co.jp 8.8.8.8
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
Name:	amazon.co.jp
Address: 52.119.168.48
Name:	amazon.co.jp
Address: 52.119.164.121
Name:	amazon.co.jp
Address: 52.119.161.5
  • Server: 8.8.8.8:問い合わせ先のDNSサーバーが 8.8.8.8 であることを示しています。
  • Non-authoritative answer: 権威サーバーからの直接の応答ではない(キャッシュサーバーからの応答である)ことを意味します。
  • Address: ...: amazon.co.jp に紐づくIPアドレスのリストです。

3. digの使い方

digでは、問い合わせたいドメイン名の後に @ を付け、続けてDNSサーバーのIPアドレスを指定します。

nslookup と同じく、8.8.8.8 に問い合わせてみます。

$ dig amazon.co.jp @8.8.8.8

; <<>> DiG 9.18.1-1ubuntu1.2-Ubuntu <<>> amazon.co.jp @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41036
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

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

;; ANSWER SECTION:
amazon.co.jp.		56	IN	A	52.119.164.121
amazon.co.jp.		56	IN	A	52.119.161.5
amazon.co.jp.		56	IN	A	52.119.168.48

;; Query time: 8 msec
;; SERVER: 8.8.8.8#53(8.8.8.8) (UDP)
;; WHEN: Sun Jan 15 21:16:37 JST 2023
;; MSG SIZE  rcvd: 89
  • ANSWER SECTION: amazon.co.jp のAレコード(IPアドレス)の応答結果です。
  • SERVER: 8.8.8.8#53(8.8.8.8): どのサーバーから応答を得たかを示しています。

4. 【応用】権威DNSサーバーに直接問い合わせる方法

DNSレコードの変更が正しく反映されたかを確認するには、キャッシュの影響を受けない権威DNSサーバーに直接問い合わせるのが最も確実です。

4.1. 権威DNSサーバーを調べる

まず、ドメインのNS(ネームサーバー)レコードを調べて、権威DNSサーバーを特定します。

$ dig -t ns amazon.co.jp
;; ANSWER SECTION:
amazon.co.jp.		172800	IN	NS	pdns1.ultradns.net.
amazon.co.jp.		172800	IN	NS	pdns6.ultradns.co.uk.
# ... (いくつか表示される)

ANSWER SECTION に表示されているのが amazon.co.jp の権威DNSサーバーです。

4.2. 権威DNSサーバーに問い合わせる

次に、特定した権威DNSサーバー(例:pdns1.ultradns.net)を指定して、Aレコードを問い合わせます。

$ dig amazon.co.jp @pdns1.ultradns.net

;; ANSWER SECTION:
amazon.co.jp.		60	IN	A	52.119.161.5
amazon.co.jp.		60	IN	A	52.119.168.48
amazon.co.jp.		60	IN	A	52.119.164.121

この結果が、あなたが設定したレコードと一致していれば、設定は正しく反映されています。

GitHubで編集を提案

Discussion