DNSの仕組みの概要(ドメイン・ネーム・システム)

目次

DNS (Domain Name System)

DNSとは、ドメイン名をIPアドレスに変換する仕組みです。

 

DNSの動き

(例) example.comのIPアドレスが10.0.10.9のとき、

 

DNSがない場合

10.0.10.9と入力する必要があります。

 

DNSがある場合

example.comという入力で良いです。

DNSがexample.comから10.0.10.9に変換するため。

 

関連の用語

ドメイン名
(FQDN)

example.comがドメイン名で、wwwがホスト名です。
※DNSが扱うドメイン名にはホスト名も含まれます。

ホスト名とドメイン名をあわせてFQDNといいます。
FQDNは、Fully Qualified Domain Nameの略で、
Fully Qualifiedは完全修飾という意味です。
httpはプロトコルです。

 

DNSの仕組み(名前解決の流れ)

 

① ブラウザに「example.com」と入力するとPCがDNSサーバーに問い合わせる
② DNSサーバーが「10.0.10.9」と回答 
③そのIPアドレスを使用してアクセスし、example.comのページが表示される

DNSを使用して通信をする場合、PCまたはルーターにDNSサーバのIPアドレスを登録しておく必要があります。

主なDNSレコードの種類

DNSサーバに登録する情報でリソースレコードと呼ばれます。

レコード 説明
A Address record
ドメイン→IPv4アドレス
ドメイン名に対するIPアドレスを指定する。
正引きで使用する。
AAAA ドメイン→IPv6アドレス
MX Mail exchange record
メールサーバーの指定
CNAME Canonical NAME record
ドメインの別名(エイリアス)
ホストの別名を指定する。
例:www.example.com → example.com
NS Name Server record
DNSサーバーの指定
どのDNSサーバーが管理するか
プライマリ、セカンダリのDNSサーバを記述。
PTR PoinTeR record
IPアドレスに対するドメイン名を指定する。
逆引きで使用する。
SOA Start of Authority record
最初に記述されるリソースレコード。
自分が管理しているゾーン(ドメイン)の情報。
DNSサーバの各種管理情報あり。

 

関連の用語

正引き ドメイン名(FQDN)からIPアドレスを取得すること
ブラウザにURLを入力してサイトを見るときは正引きが行われています。
名前解決ともいいます。
逆引き IPアドレスからドメイン名(FQDN)を取得すること
名前解決ともいいます。

DNSを構成する要素

DNSは、複数の要素で成り立っています。

DNS システム全体
 ├─ リゾルバ(PCやルーターが最初に問い合わせる)
 ├─ ルートネームサーバー(最上位のサーバー)
 ├─ TLDネームサーバー(.com / .jp などを管理)
 └─ 権威ネームサーバー(各ドメインの実際の情報を持つ)

 

名前解決の流れで見る役割分担

① ブラウザ「example.comは?」
  ↓
② リゾルバ(プロバイダやGoogleのDNSなど)が代わりに調査
  ↓
③ ルートネームサーバー「.comはこっちで聞いて」
  ↓
④ TLDネームサーバー「example.comはこっちで聞いて」
  ↓
⑤ 権威ネームサーバー「10.0.10.9です」
  ↓
⑥ ブラウザがIPアドレスにアクセス

「www.example.com」のIPアドレスを問い合わせます。
ルートネームサーバへ問い合わせします。
comのDNSサーバのアドレスを返します。
comのDNSサーバへ問い合わせします。
example.comのDNSサーバのアドレスを返します。
example.comのDNSサーバへ問い合わせします。
「www.example.com」のIPアドレスを返します。
「www.example.com」のIPアドレスを返します。

※毎回このような問い合わせが行われるわけではありません。
PCがすでに接続先のIPアドレスを保持している場合、それを再利用します。
キャッシュサーバも同様に接続先のIPアドレスを保持している場合、それを再利用します。
DNSのキャッシュは、TTL(Time To Live)という値でキャッシュの保持期間を指定できます。
期間が切れると再度問い合わせを行います。

図の右側にある3つのサーバー(ルートネーム,com,example.com)は権威サーバと呼ばれます(NSレコードにより指定される)。

 

権限委譲(delegation)

上位ドメインは下位ドメインのDNSサーバ情報のみを保持しています。
そのため、その下位ドメイン配下にはどのような下位ドメインでも作成できます。

 

リゾルバ

リゾルバには2種類あります。

スタブリゾルバ クライアント側の機能(PC・OS内)
DNSサーバーに聞いてきてと丸投げするだけ
フルサービスリゾルバ
(DNSキャッシュサーバー)
サーバ側の機能(DNSサーバ)
実際にルート→TLD→権威サーバーと順番に問い合わせて解決する

 

DNSの主なソフトウェア

権威DNSサーバー向け

BIND 最も歴史が古く世界で最も広く使われている。Linux標準的存在。設定が複雑。
NSD 権威DNSに特化。軽量・高速・シンプル。
Knot DNS 高性能・高速。大規模運用向け。

フルサービスリゾルバ(キャッシュDNS)向け

Unbound キャッシュDNSに特化。軽量・安全でおすすめ。
dnsmasq 軽量で小規模・家庭向け。DHCPも兼ねることが多い。

 

関連の用語

TLD Top Level Domain(トップレベルドメイン)の略で
example.comであればcomです。
jpは日本、comは商用、orgは団体というように意味があります。

 

DNS関連のコマンド

nslookup 簡単な確認ができる。Windows/Linux両対応。
例:nslookup google.co.jp
dig 詳細な情報が得られる。トラブルシューティング向け。
host シンプルな出力。

DNSフォワーダ

自分では解決せず、別のDNSサーバーに問い合わせを転送(フォワード)する機能・サーバーです。

 

通常のリゾルバとの違い

通常のフルサービスリゾルバは、自分で順番に調べます。

クライアント → リゾルバ → ルートサーバー → TLDサーバー → 権威サーバー

 

DNSフォワーダは、上位サーバーが代わりに調べて回答します。

クライアント → フォワーダ → 上位DNSサーバー(丸投げ)

 

項目 DNSフォワーダ フルサービスリゾルバ
動き 転送するだけ 自分で全部問い合わせ
負荷 軽い 重い
管理 シンプル 複雑
キャッシュ 持つことが多い 持つ

 

DNSフォワーダが使われる場面

1.社内ネットワーク(最も一般的)

社内PC
 ↓ 問い合わせ
社内DNSフォワーダ
 ↓
①社内ドメインの場合→社内権威DNSサーバーが解決
 ↓
②外部ドメインの場合→プロバイダDNSが解決

ドメインによって転送先を①or②に変えるので条件付きフォワーダと呼ばれます。

 

2.AWS VPC内

EC2
 ↓ 問い合わせ
Route 53 Resolver(フォワーダ)
 ↓
①AWSリソース→Route 53が解決
 ↓
②社内ドメインの場合→オンプレDNSが解決

ドメインによって転送先を①or②に変えるので条件付きフォワーダと呼ばれます。

DNSを使用しない時のファイル(hostsファイル)

hostsファイルは、ドメイン名とIPアドレスの対応が書かれたファイルです。

DNSを使用しない時のファイルです。

Windows、Linuxともにあります。

DNSに登録する前にFQDNでサーバにアクセスしたい時や、開発のテスト環境でDNSを利用できない時などに利用します。

 

hostsファイルの場所

Windows10 C:\Windows\System32\drivers\etc
Linux /etc/hosts

 

以下は、hostsファイルの中身です。

hostsファイルを更新して保存する方法は以下を参照下さい。
Windows10 hostsファイルを更新して保存する方法

関連の記事

SMTP / POP / IMAPの違い(メールのプロトコル)
L2スイッチ / L3スイッチ / ルーターの違い

△上に戻る