DNSとは?仕組みをわかりやすく解説

DNSの機能と役割

DNSはインターネットを知る上で重要な技術の一つです。

DNSは「ホスト名をもとにIPアドレスを教える」役割を担っています。

今回はそんなDNSについてできるだけわかりやすく説明してきます。

DNSとは?

DNS (Domain Name System)は「www.example.jp」のような完全修飾ドメイン名(FQDN)と「192.168.0.1」のようなIPアドレスを紐づけて管理するシステムのことを指します。

ドメイン名とホスト名とは?ドメイン名とホスト名とは?

ユーザーPCがwebページを表示する時はそのwebページの情報を持っているPCにアクセスする必要があります。その際に必要なのがIPアドレスです。しかし、IPアドレスは数字で覚えにくいということもあって、FQDNのようなアルファベット表記のアドレスを使っています。

DNSはFQDNとIPアドレスを紐づけて管理しているため、FQDNを使ってIPアドレスをユーザーPCに教えられます。これによってウェブページを表示することができるようになります。逆に言えば、DNSサーバーがなくても、IPアドレスを知っていればwebページは表示できます。ドメイン名で接続できないが、IPアドレスで接続できる場合はDNSの不調を表しています。

DNSの仕組み概略図

DNSの仕組み概略図

www.example.jp⇔192.168.0.1というようなFQDNからIPアドレス、IPアドレスからFQDNというような変換をDNSにおける名前解決と言います。

DNSの必要性

なぜDNSが必要なのでしょうか?

そもそもグローバルIPアドレスが唯一無二のアドレスとなるなら、それをアドレスとして使えばよいじゃないか?と感じる方もいるかもしれません。

しかし、「202.168.1.1」のような抽象度の高いアドレスを覚えるのは難しいですよね?ですからホスト名のようなアルファベット・数字からなる名前が登場しました。

  • 192.168.2.2→okaimono(ホスト名)
  • 112.543.22.132→densya(ホスト名) – 数字は覚えにくいがホスト名は覚えやすい

ホスト名はコンピュータ名だと思ってください。人間でいえば氏名のようなものです。このホスト名とIPアドレスを紐づけて管理すればわざわざ覚えにくい数字のIPアドレスを覚えなくても通信できるようになります。しかし、ホスト名は単純すぎてすぐに飽和してしまいます。人間の名前も同じ氏名の人は日本全国にたくさんいます。

そこで、ドメイン名という住所のようなもので管理する方法を使います。東京都渋谷区桜丘町1-1の山田太郎のようにすることで分かりやすくしています。

住所の例をFQDNっぽく表現すると「山田太郎.1-1桜丘町.渋谷区.東京都.日本」で山田太郎がホスト名、1-1桜丘町.渋谷区.東京都.日本がドメイン名ですね。右に行くほど規模が大きくなります。

www.example.jpのwwwはホスト名、example.jpはドメイン名です。

  • okaimono.com
  • okaimono.jp

はどちらも同じホスト名ですが別のアドレスです。ホスト名だけよりもたくさん表現できますね。

DNSの仕組み

現代のインターネット時代では膨大な数のIPアドレスが存在しています。IPアドレス-ホスト名を紐づけて管理するのはとても大変なはずです。もしも管理しているPCが一つなら世界中のPCからIPアドレスの問い合わせが来てパンクしてしまいます。それを回避するためにDNSは「分散システム」「キャッシュ」を使って対応しています。

ゾーン

DNSサーバー(ネームサーバー)は一つではパンクしてしまうので複数のDNSサーバーが存在しています。それでは、クライアントがホスト名からIPアドレスを知りたい場合どこに問い合わせるべきでしょうか?

DNSサーバーの担当はドメイン毎に分かれています。そしてそれぞれのDNSサーバーが担当する範囲を「ゾーン」といいます。

具体的な例を見ていきましょう。

www.example.jp.

というFQDNがあります。最も広い範囲のドメインは一番右のトップレベルドメイン「jp」です。しかし、さらにその右にはルートドメインという通常は省略されるjp.の「.」の部分を指します。「ルートドメイン .」「トップレベルドメインjp」「example」「www」と分かれています。

最も広い範囲を管理しているDNSサーバーは「ルートサーバー(DNSルートサーバー)」であり、DNSサーバーの頂点に存在しています。ルートサーバーは世界に13台しかありません。

このルートサーバーが全ての名前解決を行っているというとそうではありません。

ルートサーバーは「.jp」「.com」などのトップレベルドメインの管理を行っているDNSサーバーのFQDNとIPアドレスを管理しています。トップレベルドメイン以下の管理はそれ以下のDNSサーバー達に移譲しています。「jp」を管理するDNSサーバーや「com」を管理するDNSサーバーはそれ以下のドメインのDNSサーバーを管理しています。

DNSサーバーのゾーン管理

DNSサーバーのゾーン管理

このように階層になってDNSサーバーが存在することで処理を分散化することができます。クライアントDNSはルートサーバーから問い合わせていけば最終的にFQDNのIPアドレスの取得ができます。

全てのクライアントがルートサーバーに問い合わせるわけではありません。もう少し下位のゾーンにあるDNSサーバーにも情報(キャッシュ)が残っている場合もあるからです。

DNSサーバーからIPアドレスを検索する仕組み

クライアントはホスト名を送信してDNSサーバーからIPアドレスを取得します。クライアントはまずルートサーバーに問い合わせて、サブドメインを管理するDNSサーバーのIPアドレスを得ます。

www.example.jp.ならまずは「.」ルートサーバーからjpのDNSサーバーのIPアドレスを取得します。ルートサーバーのゾーンはトップレベルドメインの「jp」「com」を管理するDNSサーバーのアドレスまでしか知りません。サブドメイン「example」は次の「jp」を管理するDNSサーバーからexample.jpのIPアドレスを取得します。この流れを繰り返すと最終的にwww.example.jpのIPアドレスが入手できます。

DNSの問い合わせの流れと仕組み

DNSの問い合わせの流れと仕組み, example.jpのネームサーバーはホスト名wwwのIPアドレスを知っているのでフルサービスリゾルバにアドレスを返す

それでは、ホスト名からIPアドレスを取得するまでの細かい流れを見ていきましょう。

再帰問い合わせ

クライアントPCがホスト名からIPアドレスを知りたい時にDNSサーバーに問い合わせる役割を担うのが「リゾルバ(スタブリゾルバ)」です。

リゾルバの役割は2つあります。

1つはすでに名前解決したことがあるホスト名であればホスト名-IPアドレスが保存(キャッシュ)されているためそれを「ローカルネームサーバー(DNSフルサービスリゾルバ、DNSキャッシュサーバー)」から聞き出します。

2つはキャッシュが無い場合はローカルネームサーバーに名前解決を依頼します。

スタブリゾルバは外部のDNSサーバーには名前解決を依頼しません。このような問い合わせを「再帰問い合わせ」と呼びます。

反復問い合わせ

ローカルネームサーバーはLAN内にあるゾーンを管理するネームサーバーでアクセスしたことがあるホスト名-IPアドレス情報をキャッシュしたり、外部のDNSサーバーにIPアドレスの問い合わせを行います。フルサービスリゾルバとも呼ばれます。

フルサービスリゾルバは外部の権威DNSサーバーに問い合わせ、その結果をもとにサブドメインを管理する権威DNSサーバーへ問い合わせを反復して行い最終的にIPアドレス取得します。このようにフルサービスリゾルバ→権威DNSサーバーを反復して問い合わせるため「反復問い合わせ」といいます。

フルサービスリゾルバは問い合わせたホスト名-IPアドレス情報を一時的に保存(キャッシュ)してスタブリゾルバに返答し、スタブリゾルバはクライアントにIPアドレスを返信します。

こうしてホスト名からIPアドレスの名前解決が行われます。

レコード

各ゾーンのDNSサーバーが管理する情報をレコードといいます。

  • NSレコード:権威移譲の情報、どのドメインのDNSサーバー?
  • Aレコード:IPアドレスとFQDN(ホスト名)の情報(正引き)
  • PTRレコード:ホスト名→IPアドレスのレコード

NSレコードの中身

(TTL) IN NS (DNSサーバーのFQDN)  例:1800 IN NS ns.example.net

TTL(Time To Live)はキャッシュの保存期間のことで単位は[秒]

Aレコードの中身

AレコードはFQDNからIPアドレスを取得するためのレコードです。

(FQDN) (TTL) IN A (IPアドレス)  例:www.example.com 1800 IN A 202.242.168.111

 

DNSの実態

個人の場合は自分が契約しているISPのDNSサーバーを利用していると思います。また、何かしらの不調がある場合はgoogle public DNSのようなオープンなDNSを代替DNSサーバーとして利用できます。

代替DNSサーバーはセキュリティを強化するために利用されることもあります。DNSサーバーがリクエストされたドメイン名(URL)からIPアドレスを返信する際に、危険なサイトのURLの場合にはIPアドレスを返さなければ危険な接続からユーザーを保護できます。

参考

参考 DNSとは:超入門DNS - @IT@IT

コメントを残す

メールアドレスが公開されることはありません。