リゾルバ(Resolver)は、DNS(Domain Name System)のネームサーバへアクセスしドメイン名前空間から任意のノードの情報を取得するために用いられるクライアントの名称。文字通りドメイン名を解決する者(resolver)である。「ネームリゾルバ」とも言う。
リゾルバは、その役割と動作する場所によって、クライアント端末内で動くスタブリゾルバと、名前解決を代行するDNSサーバであるフルリゾルバ(DNSキャッシュサーバ)の2つに大別される。
かつてはトランスポート・プロトコルとしてUser Datagram Protocol(UDP)が主流であったが、近年ではDNS over HTTPS (DoH) が利用されている。
スタブリゾルバ 自らが名前解決の探索手段を持たない、クライアント(PCやスマホなど)に組み込まれた軽量なリゾルバを、スタブリゾルバという。Webブラウザやメールクライアント等のアプリケーションからの要求を受け、設定されたフルサービスリゾルバへ問い合わせをそのまま転送し、返ってきた結果をアプリケーションに返します。DNSクライアントとも言う。
フルリゾルバ スタブリゾルバからの要求を引き受け、ルートサーバをはじめとする世界中の権威DNSサーバへ段階的に反復問い合わせ)を行い、最終的な情報を突き止めるサーバのことをフルリゾルバという。キャッシュ機能を持つのでDNSキャッシュサーバとも言う。
フルオープンリゾルバのうち、インターネット上のどの端末からもDNS要求を受け付けるリゾルバを、オープンリゾルバと言う。DoS攻撃やDNSキャッシュポイゾニングなどの攻撃を受けるため、セキュリティ上問題である。
処理の内容
問い合わせ - リゾルバは多くの場合自らで名前解決の手段を持たないため指定された又は既定のネームサーバへ問い合わせを行う。この時、問い合わせを行えるネームサーバが複数ある場合は最初のDNSサーバ(プライマリDNSサーバ)へ問い合わせを行い、タイムアウト又はネットワークエラーが発生した場合のみ2番目のDNSサーバ(セカンダリDNSサーバ)への問い合わせを行う。これは分散型データベースであるDNSサーバはどのサーバに問い合わせたとしても全て同じ結果を返してくるはずと言う思想に基づいているからである。 結果の取得 - DNSサーバからの応答を取得する。この時にエラーやタイムアウト、再度の問い合わせを行うかどうかの判定も行う。 結果の出力 - 取得した値、若しくはエラー、タイムアウト等の情報を出力する。
コマンド 指定したDNSサーバに向けて直接DNSクエリをあたえるコマンドとして、 nslookup がある。
例 $ nslookup ja.wikipedia.org 8.8.8.8 Server: 8.8.8.8 Address: 8.8.8.8#53
Non-authoritative answer: ja.wikipedia.org canonical name = text-lb.eqiad.wikimedia.org. Name: text-lb.eqiad.wikimedia.org Address: 208.80.154.224
解釈 Server / Address : 問い合わせ先のDNSサーバとして、Googleが提供するパブリックDNS(8.8.8.8)の53番ポート(DNS標準ポート)が応答したことを示している。 Non-authoritative answer : 応答を返したサーバ(8.8.8.8)が、該当ドメインの情報を直接管理している「権威サーバ」ではなく、過去に取得したレコードを一時的に保存している「キャッシュDNSサーバ(フルリゾルバ)」であることを意味する。権威サーバの回答ではないので権威のない回答と示される。 canonical name(CNAMEレコード) : 「ja.wikipedia.org」というドメイン名が、ウィキメディア財団の内部的な負荷分散用サーバである「text-lb.eqiad.wikimedia.org」という正式名に転送・紐づけられていることを示している。 Name / Address : 名前解決の最終結果。転送先の正式名に紐づく、Wikipediaの実際のIPv4アドレスが「208.80.154.224」であることが正常に判明した。
脚注
関連項目
DNS DNSサーバ 名前解決 nslookup
en:Domain Name System#DNS resolvers