DNSルックアップとは
DNS(ディーエヌエス)lookup(ルックアップ)は、指定したドメイン名について、AやMXなどのDNSレコードを問い合わせる操作です。問い合わせ名前だけでなく、レコード種類とクラス、問い合わせ先サーバーを組み合わせて一つの問い合わせになります。
DNSはDomain Name System(ドメイン・ネーム・システム)です。通常アプリケーションはOSのスタブリゾルバーへ依頼し、再帰リゾルバーがキャッシュまたは権威サーバーへの問い合わせから応答を返します。dig・nslookupの直接問い合わせは、この通常経路と違う場合があります。
「ドメインを検索した結果」は一個の固定IPではありません。レコード種類、リゾルバー、場所、時刻、キャッシュ、クライアントサブネット、DNSSEC検証、CNAME連鎖によって応答が変わります。

一つの問い合わせを構成する項目
末尾ドット、検索接尾辞、国際化ドメインの変換を含め、実際に送った名前を確認します。
A、AAAA、MX、TXT、NS等を指定し、種類ごとのデータ構造を読みます。
一般的なInternet DNSはINを使います。クラスをレコード種類と混同しません。
OS既定、ルーター、ISP、パブリック、VPN、権威等で表示とキャッシュが変わります。
RD・RA・AA・TC・AD・CD等から問い合わせ・応答の処理条件を読みます。
NOERROR、NXDOMAIN、SERVFAIL等を応答・権威情報・additionalと一緒に見ます。
通常は再帰リゾルバーへ依頼する
アプリケーションはOSリゾルバーAPIへ名前を渡し、ホストファイル、ローカルキャッシュ、DNS方針、検索接尾辞等を経て再帰リゾルバーへ問い合わせします。リゾルバーはキャッシュに有効な応答があれば即座に返します。
キャッシュがなければルート、TLD、権威サーバーから紹介を辿り、必要ならCNAME対象も解決します。クライアント自身が毎回ルートから辿るわけではありません。
レコード種類を指定する
AはIPv4、AAAAはIPv6、MXはメールexchanger、NSはゾーンのネームサーバー、TXTは用途別テキスト、SRVはサービスエンドポイント等です。MX問い合わせへWebサーバーのIPが返るとは限りません。
アプリケーションが実際に使う種類を調べます。Web接続ならA・AAAAに加えHTTPSレコード等を使う実装もあり、メール配送ならMXからさらにメールホストのアドレスを解決します。
応答は区間と状態で読む
Answerは問い合わせへの応答やCNAME、Authorityは権威サーバー・否定応答のSOA等、Additionalは参照先ネームサーバー・メールサーバー等の補助アドレスを含み得ます。
Additionalに入ったアドレスは必ずしも求めた応答ではなく、キャッシュ・bailiwick規則に従って扱われます。表示された全レコードを同じ信頼度・目的として保存しません。
NOERRORでも応答が空の場合がある
名前は存在するが指定種類がない場合、状態はNOERRORで応答が空になるNODATA応答があります。名前自体が存在しないNXDOMAINとは別です。
SERVFAILはDNSSEC検証障害、上流タイムアウト、サーバーエラー等、リゾルバーが回答を完成できなかった状態です。REFUSEDは方針上問い合わせを拒否した可能性があります。コードだけで原因を一つに決めません。
CNAME連鎖を最後まで追う
CNAMEは問い合わせ名をcanonical name(カノニカル・ネーム/正規名)へ対応付けます。リゾルバーや確認ツールはCNAMEと最終的なA・AAAAを同じ応答へ含める場合がありますが、TTLはレコードごとに異なります。
連鎖途中のループ、長過ぎる連鎖、対象のNXDOMAIN、種類不整合で失敗します。最終IPだけを記録すると、どの別名段階で問題が起きたか分かりません。
TTLと否定キャッシュ
肯定応答は各レコードのTTL範囲でキャッシュされ、時間経過とともに残りTTLが減ります。権威レコードを変更しても、既存リゾルバーキャッシュは期限まで古い応答を返せます。
NXDOMAINやNODATAもSOA情報に基づき否定キャッシュされます。修正直後に「まだ存在しない」と見えるとき、ローカル、ブラウザー、再帰リゾルバー、権威を分けて確認します。
DNSSECはデータの署名検証
検証機能付きリゾルバーはDNSSEC連鎖を検証し、認証済みデータを示せます。ADフラグは通常、そのリゾルバーが検証済みとクライアントへ示すもので、クライアントが自分で全署名を検証したこととは限りません。
DNSSECはDNSデータの出所・改ざんを検証しますが、返されたWebサイトの内容を安全と保証しません。HTTPS証明書とアプリケーションセキュリティは別です。
分割DNSとリゾルバー差
企業・家庭・VPNでは、同じ名前へ内部リゾルバーがプライベートアドレス、外部リゾルバーがグローバルアドレスを返すスプリットホライズン構成があります。パブリックリゾルバーへ直接問い合わせすると、利用中アプリケーションと違う応答になります。
CDNやgeo経路制御はリゾルバー位置やEDNS Client Subnet等で応答を変える場合があります。比較時はリゾルバーIP、ネットワーク、VPN、IPv4・IPv6、問い合わせ時刻を揃えます。
DNS検索は名前・種類・クラスを特定リゾルバーへ問い合わせる操作です。問い合わせ経路、応答状態、区間、CNAME、TTL、否定キャッシュ、DNSSEC、表示を記録し、一個のIPだけへ単純化しません。
DNSのdomain space・resolver・name server:RFC 1034、message・query・resource record:RFC 1035