DNSによる名前解決の仕組み

 DNS(Domain Name System)は、インターネット上で使用されるドメイン名を、通信に必要なIPアドレスに変換するためのシステムです。この仕組みによって、ユーザーは覚えやすいドメイン名を使ってウェブサイトやリソースにアクセスでき、裏ではDNSがそのドメイン名をIPアドレスに解決します。

DNSによる名前解決の流れ

下図を用いて、名前解決がどのように行われるかを解説します。

ステップ説明詳細
① ルートネームサーバーへの問い合わせクライアントからの名前解決要求がルートネームサーバーに送信され、jpドメインを管理するDNSサーバー情報が返される。ルートドメインからjpドメインへのリダイレクト
② jpドメインのDNSサーバーへの問い合わせjpドメインのDNSサーバーにco.jpドメインのDNSサーバー情報を問い合わせる。co.jpドメインへのリダイレクト
③ co.jpドメインのDNSサーバーへの問い合わせco.jpドメインのDNSサーバーにcompany.co.jpのDNSサーバー情報を問い合わせる。company.co.jpへのリダイレクト
④ company.co.jpドメインのDNSサーバーへの問い合わせ最後に、company.co.jpドメインのDNSサーバーにwww.company.co.jpのIPアドレスを問い合わせる。クライアントにIPアドレスが返される
DNSによる名前解決の流れ
詳細解説
  1. ルートネームサーバーへの問い合わせ(①)
     クライアントがwww.company.co.jpを解決しようとしたとき、まずルートネームサーバーに問い合わせが行われます。このルートネームサーバーは、どのDNSサーバーがjpトップレベルドメイン(TLD)を管理しているかを知っているため、その情報をクライアントに返します。
  2. jpドメインのDNSサーバーへの問い合わせ(②)
     次に、jpドメインのDNSサーバーがco.jpドメインのDNSサーバーの情報を持っているので、クライアントはそのDNSサーバーに問い合わせます。
  3. co.jpドメインのDNSサーバーへの問い合わせ(③)
     co.jpドメインのDNSサーバーに問い合わせることで、company.co.jpドメインのDNSサーバーの情報が返されます。
  4. company.co.jpドメインのDNSサーバーへの問い合わせ(④)
     company.co.jpのDNSサーバーに問い合わせることで、最終的にwww.company.co.jpのIPアドレスが取得されます。
  5. IPアドレスの取得と返答(⑤,⑥)
     最後に、company.co.jpのDNSサーバーが、www.company.co.jpのIPアドレス(例: 192.168.1.10)をクライアントに返します。これにより、クライアントは目的のサーバーに接続することができます。

なぜDNSはドメイン名空間で管理されるのか

 DNSは、インターネット全体の名前解決を効率的に行うために、階層構造の「ドメイン名空間」で管理されています。この階層構造により、各レベルの管理を分散させ、ドメイン名の重複を避けることができます。

  • ルートドメイン: ドメイン名空間の最上位で、全てのドメイン名の指針となります。
  • トップレベルドメイン (TLD): 各国や組織の種類を示し、ルートドメインから階層的に分けられています。
  • セカンドレベルドメイン: 特定の組織や企業を識別するために使用され、TLDの下に位置します。
  • サードレベルドメイン: 組織内の部門やサービスを示し、さらに細かい管理が行われます。

この階層構造により、インターネット全体での名前管理が効率的に行われ、スケーラビリティと信頼性が確保されています。

DNSの主なレコード

DNSの主なレコードを以下にまとめます。

レコードタイプ説明
Aレコードドメイン名をIPv4アドレスにマッピングします。
AAAAレコードドメイン名をIPv6アドレスにマッピングします。
CNAMEレコードドメイン名を別のドメイン名にマッピングします(別名)。
MXレコードメールの送信先を指定するために使用されるレコード。
NSレコードドメインを管理するDNSサーバーの情報を示します。
PTRレコードIPアドレスからドメイン名への逆引きに使用されます。
DNSの主なレコード

/etc/resolv.conf

 /etc/resolv.confは、DNSクライアントの設定を管理するファイルで、DNSサーバーのアドレスや検索ドメインを指定します。

以下は出力例です。

$ cat /etc/resolv.conf
# This is /run/systemd/resolve/stub-resolv.conf managed by man:systemd-resolved(8).
# Do not edit.
#
(省略)
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 127.0.0.53
options edns0 trust-ad
search .
  • nameserver 127.0.0.53
     クライアントが使用するDNSサーバーのアドレスを指定します。この場合、ローカルループバックアドレスで動作するDNSリゾルバーです。
  • options edns0 trust-ad
    拡張DNS機能や信頼されたDNS応答を扱うオプションです。

まとめ

 DNSは、インターネット上の名前解決を効率的に行うための重要なシステムです。階層構造で管理されるドメイン名空間を用いることで、分散管理を可能にし、インターネット全体のスケーラビリティと信頼性を確保しています。/etc/resolv.confファイルによって、クライアントはDNSサーバーへの問い合わせ方法を制御し、名前解決を実行します。