DNSLookupツールを作ってみた(PHPでA/AAAA/MX/TXTなどを確認)

/ 更新:

Webサイトやメールの設定で「DNSが原因かも?」という場面は意外と多いものです。

Aレコード、MX、TXT(SPF/DKIM/DMARC)など、どれか1つでもズレると、サイト表示やメール配信がうまく動かなくなります。

そこで今回は、ドメインを入力するだけでDNSレコードを確認できる「DNS Lookupツール」を作ってみたので、使いどころ・見方・実装(PHP)をまとめます。

DNSとは?

Domain Name Systemの略称です。DNSは、ドメイン名とIPアドレスを紐づけて管理し、ドメイン名からIPアドレスを変換する(名前解決)を行います。これにより、ドメイン名でWebサイトにアクセスできるようになります。

DNSは、インターネット上でドメイン名を利用するための基盤技術であり、Webサイトへのアクセス、メールの送受信など、インターネット利用に不可欠な仕組みです。

DNS Lookupとは何か

DNS Lookupは、ドメイン名に紐づくDNSレコードを問い合わせて、現在の設定内容を確認する操作です。

主に次のような用途で役に立ちます。

  • webサイトの疎通確認(A/AAAA/CNAME)
  • メール設定の確認(MX/TXT)
  • DNS切り替え・移行時の確認(反映状況、TTLの影響)

このツールの有用性としては、コマンド自体は自分の端末から発行して確認することができますが、社内のNWを理解していないと、実際に外部からどう見えているのかがわからないという場合に、外部環境においてあるツールを介して、DNSを参照するという点です。


作ったDNS Lookupツール(使い方)

  1. ドメイン(例:example.com)を入力
  2. 結果を見て、設定内容を確認
DNS Lookupツールはこちら

DNSレコードの見方(よく使う種別)

DNS Lookupツールで表示される情報は、基本的に「設定の事実」です。重要なのは、どのレコードを見れば何が分かるかです。

レコード何が分かる?よくある確認ポイント
AIPv4の到達先WebサーバのIPが正しいか、旧IPのままではないか
AAAAIPv6の到達先
IPv6で到達できる/できないの切り分け
CNAME別名(エイリアス)期待したホスト名に向いているか、末尾ドットの扱い
MXメール配送先優先度(pri)と配送先ホストが正しいか
TXT文字列設定SPF/DKIM/DMARC等の値が正しいか、重複していないか
NS権威DNSどのネームサーバが管理しているか
SOAゾーン管理情報権威の整合性や、管理情報(serial等)の目安

例:メール設定で最低限見るべきもの

  • MX:配送先が正しいか(Google Workspace / Microsoft 365 / さくら等)
  • TXT(SPF):送信元許可が正しいか
  • TXT(DKIM/DMARC):署名やポリシーが正しく公開されているか

よくあるトラブルと切り分け(FAQ)

反映されない/変えたのに古い値が出る

DNSは「変更=即時反映」ではありません。主な要因は以下です。

  • TTL(キャッシュ時間):過去の応答が一定時間残る
  • 各所のキャッシュ:PC、ルータ、ISP、社内DNS、アプリなど
  • 参照先の差:見る場所によって違うDNSを引いている

対策の基本は「時間を置く」「別回線/別環境で確認」「キャッシュの影響を疑う」です。

NXDOMAIN / 何も返らない

多い原因は次のいずれかです。

  • ドメイン名の入力ミス(全角、余分なスペース、末尾のドット等)
  • そもそもそのレコードが未設定
  • 参照しているネームサーバが想定と違う(NSの設定ミス等)

社内では見えるのに外部から見えない

典型的には「社内向けDNS」と「外部向けDNS」が異なる(スプリットDNS)ケースです。
外部公開の想定があるなら、外部からの参照結果(第三者ネットワークの視点)も確認するのが重要です。


サンプルコード

PHPでDNSを取得するのは、すごく簡単です。

dns_get_record(ドメイン, DNS_ALL);

https://www.php.net/manual/ja/function.dns-get-record.php

About Shinya Okada

1989年生まれ。既婚。東京高専・茨城大。
グループ会社SE→社内SEへ転職。
趣味:バレーボール、投資、プログラミング