DNSの名前解決を確認するとは、ドメイン名が正しくIPアドレスや各種DNSレコードに解決されるかを調べることです。
たとえば、Webサイトにアクセスするときは、example.com のようなドメイン名をDNSで引いて、対応するIPアドレスを取得してから接続します。
そのため、サイトが開かない、メールが届かない、切り替え後に一部だけ古いサーバーへ向いている、といった問題では、まずDNSの確認が重要になります。
DNS確認では、単に「IPが返るか」だけでは不十分です。
実務では主に次の点を見ます。
DNSは、ドメイン名とネットワーク上の情報を対応づける仕組みです。
代表的なのは、次のような変換です。
example.com → 93.184.216.34これを一般には「名前解決」と呼びます。
ただし、DNSはIPアドレスだけを返すものではありません。
用途に応じて、メール配送先、別名、認証用テキスト、ネームサーバー情報なども返します。
そのため、DNS確認では用途に応じたレコードを見る必要があります。
DNSの確認でよく使うレコードは次の通りです。
ホスト名をIPv4アドレスに対応づけます。
ホスト名をIPv6アドレスに対応づけます。
あるホスト名を別のホスト名の別名として設定します。
メールの配送先サーバーを示します。
SPF、DKIM、DMARC、ドメイン所有確認などで使われます。
そのドメインを管理する権威ネームサーバーを示します。
ゾーン管理情報を持つレコードで、シリアル番号などが確認できます。
代表的なのは次の4つです。
nslookupdighostpingこの中で、詳しく調べるなら dig が最も便利です。
一方、Windows環境では nslookup が標準で使いやすく、基本確認によく使われます。
nslookup は手軽に名前解決を確認できるコマンドです。
nslookup example.com
このコマンドでは、通常は現在のPCが利用しているDNSサーバーに問い合わせます。
出力では、主に次を見ます。
たとえば、次のような結果になります。
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
Name: example.com
Address: 93.184.216.34
この場合、Server は問い合わせ先DNSサーバー、Address は名前解決結果です。
Non-authoritative answer は、権威DNSから直接返されたという意味ではなく、通常は再帰リゾルバやキャッシュDNS経由の回答であることを示します。
nslookup example.com 8.8.8.8
これはGoogle Public DNSに直接問い合わせる例です。
このように問い合わせ先を変えることで、自PCや社内DNS、プロバイダDNSの影響を切り分けやすくなります。
MXレコード確認
nslookup -type=mx example.com
NSレコード確認
nslookup -type=ns example.com
TXTレコード確認
nslookup -type=txt example.com
dig はDNS調査で非常に強力です。
LinuxやmacOS、WSLなどで特によく使われます。
dig example.com
通常は次のような情報が表示されます。
普段の確認では ANSWER SECTION がまず重要です。
ただし、委任や権威の確認、トラブルシュートでは AUTHORITY SECTION やヘッダの status、flags も重要になります。
dig example.com A
dig example.com AAAA
dig www.example.com CNAME
dig example.com MX
dig example.com TXT
dig @8.8.8.8 example.com
このように @DNSサーバー名またはIP を付けると、問い合わせ先を指定できます。
比較用としては次のような使い方が便利です。
dig @8.8.8.8 example.com
dig @1.1.1.1 example.com
dig @8.8.4.4 example.com
結果が一致しない場合は、キャッシュ差や反映途中の可能性があります。
dig +short example.com
返答だけを簡潔に確認したいときに便利です。
ping example.com
ping はDNS専用のコマンドではありませんが、名前解決できるかどうかの簡易確認には使えます。
たとえば出力に
Pinging example.com [93.184.216.34] with 32 bytes of data:
のようにIPアドレスが表示されれば、少なくとも名前解決自体は行われています。
ただし、ping はDNS詳細確認には向いていません。
理由は次の通りです。
そのため、ping はあくまで簡易確認であり、本格的なDNS調査では nslookup や dig を使います。
host はシンプルに結果を見たいときに便利です。
host example.com
MX確認
host -t mx example.com
NS確認
host -t ns example.com
深い調査は dig の方が向いていますが、簡単な確認には十分使えます。
まず次の順番で確認すると効率的です。
nslookup example.com
dig example.com
dig www.example.com
dig example.com A
dig example.com AAAA
dig @8.8.8.8 example.com
dig @1.1.1.1 example.com
dig www.example.com CNAME
ここで確認したいのは次の点です。
www あり/なしで差がないかよくある原因は次の通りです。
www 側だけ未設定メール系ではAレコードだけでなく、MXやTXTの確認が重要です。
nslookup -type=mx example.com
dig example.com MX
dig mail.example.com A
dig example.com TXT
dig selector._domainkey.example.com TXT
dig _dmarc.example.com TXT
確認したいポイントは次の通りです。
サーバー移転やメール切り替え時は、反映状況の確認が重要です。
dig example.com
dig @8.8.8.8 example.com
dig @1.1.1.1 example.com
必要に応じて、さらに権威DNSも確認します。
このとき見るべき点は次の通りです。
これは非常に重要です。
通常のDNS問い合わせでは、途中の再帰リゾルバやキャッシュDNSが返答するため、必ずしも現在の権威情報そのものを見ているとは限りません。
dig example.com NS
たとえば、次のように権威ネームサーバーが分かります。
example.com. 172800 IN NS ns1.example-dns.net.
example.com. 172800 IN NS ns2.example-dns.net.
dig @ns1.example-dns.net example.com A +norecurse
ここで +norecurse を付けるのがポイントです。
これにより、再帰問い合わせを期待せず、そのサーバーが持っている情報をより直接的に確認しやすくなります。
さらに、委任の流れ全体を追いたい場合は次も有効です。
dig example.com +trace
+trace はルートから順に辿っていくため、委任ミスや途中の問題確認にも役立ちます。
dig の結果にはTTLが表示されます。
たとえば次のような形です。
example.com. 300 IN A 203.0.113.10
この 300 がTTLです。単位は秒です。
基本的には、この値がキャッシュ保持時間の目安になります。
つまり、この例ではキャッシュDNSはしばらくこの情報を保持する可能性があります。
ただし、実装によってはTTLの扱いに差が出ることもあり、古い情報を一定時間返す仕組みが有効な場合もあります。
そのため、TTLは「おおむねこのくらいの時間、古い情報が残り得る目安」と理解すると実務的です。
DNSの問題は、設定ミスではなくキャッシュが原因で起きることも非常に多いです。
キャッシュが残る可能性がある場所は次の通りです。
ipconfig /displaydns
ipconfig /flushdns
/displaydns でキャッシュ内容の表示、/flushdns で削除ができます。
macOSではバージョン差があるため、コマンドは環境依存です。
代表例としては次がよく使われます。
sudo killall -HUP mDNSResponder
環境によっては追加の操作が必要なこともあるため、macOSでは「バージョンによって異なる」と理解しておくのが安全です。
Linuxも環境依存です。
systemd-resolved を使っている環境では、たとえば次が使えます。
sudo resolvectl flush-caches
または環境によっては
sudo systemd-resolve --flush-caches
が使われます。
ただし、Linux全体の共通コマンドではありません。
nscd、dnsmasq、あるいはキャッシュデーモンを使っていない環境では対処方法が異なります。
DNSには正引きと逆引きがあります。
ドメイン名からIPアドレスを調べることです。
dig example.com A
IPアドレスから名前を調べることです。
dig -x 8.8.8.8
逆引きはメールサーバーの運用や一部の認証・監査で重視されることがあります。
SOAレコードはゾーン管理情報を持っています。
dig example.com SOA
主に次の情報が見られます。
特にシリアル番号は、DNS変更が権威DNS側で更新されているかを見る手掛かりになります。
名前解決に失敗したときは、次の順番で切り分けると分かりやすいです。
nslookup example.com
dig example.com
dig @8.8.8.8 example.com
dig @1.1.1.1 example.com
dig example.com A
dig example.com AAAA
dig www.example.com CNAME
dig example.com NS
dig @ns1.example-dns.net example.com A +norecurse
nslookup example.com
dig example.com
dig +short example.com
nslookup example.com 8.8.8.8
dig @8.8.8.8 example.com
dig @1.1.1.1 example.com
wwwあり・なし比較
dig example.com
dig www.example.com
dig example.com A
dig example.com AAAA
dig www.example.com CNAME
dig example.com MX
dig example.com TXT
dig _dmarc.example.com TXT
dig -x 203.0.113.10
dig example.com NS
dig @ns1.example-dns.net example.com A +norecurse
dig example.com +trace
DNS確認では、コマンド結果を見るだけでなく、「何をもって正常とするか」が大切です。
www ありなしが想定通りこれは誤りです。
ICMPが拒否されているだけで、DNS解決自体は成功していることがあります。
これも誤りです。
DNSはキャッシュやリゾルバ差の影響で、環境ごとに見え方が変わることがあります。
必ずしもそうではありません。
TTLやキャッシュの影響で、反映に時間差が出ます。
実際には用途次第です。
Web、メール、CDN、認証用途で見るべきレコードは変わります。
迷ったときは、まず次の順で見ると効率的です。
nslookup example.comdig example.comdig @8.8.8.8 example.comdig @1.1.1.1 example.comdig example.com NSdig @権威DNS example.com A +norecursedig example.com +traceこの流れで、多くのDNSトラブルはかなり切り分けやすくなります。
DNSの名前解決確認では、単に「IPアドレスが返るか」を見るだけではなく、
まで確認することが重要です。
まずは次のコマンドを押さえておくと実務で役立ちます。
nslookup example.com
dig example.com
dig @8.8.8.8 example.com
dig example.com NS
dig @ns1.example-dns.net example.com A +norecurse
dig example.com +trace
これに加えて、必要に応じて A、AAAA、CNAME、MX、TXT、SOA を確認していけば、DNS関連の多くの問題に対応しやすくなります。
以上、DNSの名前解決の確認方法についてでした。
最後までお読みいただき、ありがとうございました。