DNSとは
DNS(Domain Name System:ドメインネームシステム)とは、インターネット上で私たちが目にする「google.com」や「yahoo.co.jp」といった文字の住所(ドメイン名)と、コンピュータが理解できる「142.250.196.110」といった数字の住所(IPアドレス)を、互いに変換する仕組みのことです。この変換作業を「名前解決(なまえかいけつ)」と呼びます。
インターネットの通信自体はIPアドレスを使って行われますが、人間にとって数字の羅列を覚えるのは非常に困難です。そこで、分かりやすい英語などの名前(ドメイン名)でアクセスできるようにし、裏側でDNSサーバーが「この名前のIPアドレスはこれですよ」と教えてくれることで、快適にインターネットを利用できるようになっています。
具体例
スマートフォンの「電話帳(連絡先)アプリ」をイメージしてみましょう。
- あなたが友人の「山田太郎さん」に電話をかけたいとき、覚えるのが難しい「090-XXXX-XXXX」という電話番号を直接ダイヤルする代わりに、電話帳で「山田太郎」という名前を探してタップします。
- 電話帳アプリは、名前の裏に登録されている「電話番号(IPアドレス)」を自動的に呼び出して発信します。
- この「名前から番号を引く」電話帳の役割を、インターネットの世界で世界規模で行っているのがDNSです。WebブラウザにURLを入力すると、DNSサーバーへ問い合わせが行われ、正しい相手のサーバーへ接続されます。
もう少し詳しく
DNSは、インターネットの根幹を支える世界規模の分散型データベースシステムです。世界中にあるドメイン名は、ツリー状(木構造)の階層構造で管理されています。最上位にはドメイン名の基点となる「ルートドメイン(表記上は末尾のドットですが通常は省略されます)」があり、その下に「TLD(トップレベルドメイン:jp, com, netなど)」、「セカンドレベルドメイン(co, ac, neなど)」というように、右側から順に階層が下がっていきます。
この膨大なドメイン情報を管理するため、DNSサーバーは以下の2つに役割が分担されています。
- 権威DNSサーバー(コンテンツサーバー):自身が管理を任されている特定のドメイン(例:example.co.jp)に関するIPアドレス情報(ゾーン情報)を保持し、外部からの問い合わせに直接回答するサーバーです。
- キャッシュDNSサーバー(DNSリゾルバ):PCやスマホなどの端末からの依頼を受け、代わりに世界中の権威DNSサーバーへバケツリレー式に問い合わせを行って結果を端末に返すサーバーです。一度解決した情報は、一定期間(TTL:Time To Live)自身のメモリに「キャッシュ」として保存し、次回以降の問い合わせに対して高速に回答します。
キャッシュDNSサーバーが名前解決を行う際は、「反復問い合わせ」と呼ばれる手順をとります。まず最上位の「ルートサーバー」に尋ね、次に指示された「.jpサーバー」に尋ね、さらに指示された「co.jpサーバー」へと順次尋ねることで、最終的なIPアドレスにたどり着きます。
試験でのポイント
試験において、DNSは「ドメイン名」と「IPアドレス」を相互に変換する「名前解決(DNS)」の機能そのものが最頻出です。また、DNSの仕組みとして「キャッシュDNSサーバー」と「権威DNSサーバー(コンテンツサーバー)」の役割の違いについてもしばしば問われます。
セキュリティ分野の試験では、DNSを悪用した攻撃手法である「DNSキャッシュポイズニング」が非常に多く出題されます。これは、キャッシュDNSサーバーのキャッシュ機能の弱点を突き、偽のドメインとIPアドレスの対応情報を注入して、ユーザーをフィッシングサイトなどの偽サイトに自動的に誘導するサイバー攻撃です。この対策として、問い合わせ時のポート番号をランダムにする「ソースポートランダマイズ」や、暗号署名を用いてデータの真正性を確認する「DNSSEC(DNS Security Extensions)」といった技術がよく出題されます。
関連する用語
DNSに関連する用語には、インターネット上の名前「ドメイン名」、住所の変換処理「名前解決」、問い合わせを中継・保存する「キャッシュDNSサーバー」、偽の情報を登録させる攻撃「DNSキャッシュポイズニング」、情報の有効期限である「TTL」などがあります。