目次
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ファイルを更新して保存する方法
関連の記事
