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アドレスが返される |
詳細解説
- ルートネームサーバーへの問い合わせ(①)
クライアントがwww.company.co.jp
を解決しようとしたとき、まずルートネームサーバーに問い合わせが行われます。このルートネームサーバーは、どのDNSサーバーがjp
トップレベルドメイン(TLD)を管理しているかを知っているため、その情報をクライアントに返します。 - jpドメインのDNSサーバーへの問い合わせ(②)
次に、jp
ドメインのDNSサーバーがco.jp
ドメインのDNSサーバーの情報を持っているので、クライアントはそのDNSサーバーに問い合わせます。 - co.jpドメインのDNSサーバーへの問い合わせ(③)
co.jp
ドメインのDNSサーバーに問い合わせることで、company.co.jp
ドメインのDNSサーバーの情報が返されます。 - company.co.jpドメインのDNSサーバーへの問い合わせ(④)
company.co.jp
のDNSサーバーに問い合わせることで、最終的にwww.company.co.jp
のIPアドレスが取得されます。 - 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アドレスからドメイン名への逆引きに使用されます。 |
/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サーバーへの問い合わせ方法を制御し、名前解決を実行します。