DNSについて学習しなおしてみる
先日案件の中で、DNSについて触れる機会があったのだが、自身のDNSに対しての知識の無さに愕然としたので、DNSの基礎について以下にまとめたいと思うw
近いうちにDNSサーバの構築もやり方を調べてやってみる。
DNSとは
まず、DNSとは、IPアドレスとドメイン名を相互変換するアプリケーション層プロトコルである。
IPアドレスだけだと、数字の羅列で人間が記憶するには限界があるので、ドメイン名という形で人間にわかりやすい形で通信を行えるようにした仕組み。
まあ、DNSって何?と聞かれたら、
ドメイン名とIPアドレスを変換する仕組みと理解しておけば問題ない。
ドメイン名について
ドメイン名の構成を下記する。
www.example.co.jp.
www →ホスト名
example →第3レベルドメイン
co →第2レベルドメイン
jp →トップレベルドメイン(第1じゃないんかい。。。)
. →一番右のドットはルートを表し表記上は省略する
www がホスト名で、それ以降のラベルの集合体をドメイン名と呼ぶ
ホスト名+ドメイン名をドメイン名と呼ぶことが多いが、正式にはFQDN(完全修飾ドメイン名)と言う。
DNSが提供する2つの仕組み
名前解決 と ゾーン転送 の2つの仕組みを提供する。
名前解決は、その名の通り、IPアドレスとドメイン名の変換を行う仕組み。
権威サーバ、キャッシュサーバ、DNSクライアント の3つの要素が、相互連携することでこの仕組みは成り立っている。
権威サーバとは、自身のドメインの情報を保持しており、キャッシュサーバからの反復クエリを受け付け、最終的にIPアドレスを回答するサーバ。
キャッシュサーバとは、DNSクライアントからの再帰クエリを受け付け、インターネット上にある権威サーバに反復クエリを送信するサーバ。受け取ったDNS応答の結果を一定時間キャッシュし、再利用することでDNSトラフィックの抑制を図っている。
DNSクライアントは、DNSサーバに名前解決を要求をする端末のこと。
ブラウザ、メールソフト、Windows OS等がこれにあたる。こいつもDNS応答結果を一定時間キャッシュするので、DNSトラフィックの抑制を図ることができている。
ドメイン名の構造
ルートをトップとして、ツリー上の階層構造になっている。
名前解決は上から問合せていくことで、最終的な権威サーバに到達できるようになっている。このドメインの構成をドメインツリーという。
名前解決は失敗すると、Webアクセスやメール送信ができなくなるため、基本、冗長構成にする。
キャッシュサーバと権限サーバで冗長方式が異なるため、それぞれ説明を下記する。
キャッシュサーバ冗長は、クライアント側で複数DNS要求先を設定するだけ。
キャッシュサーバはDNS応答結果をキャッシュしているだけなので、サーバ間同期は不要。
権威サーバ冗長は、サーバ間で同じゾーン情報を常に保持する必要があるため、ゾーン情報を同期する処理を行う必要があり、それをゾーン転送という。
ゾーン転送周知はスケジューリングと手動の2パターンが可能。
上位DNSサーバ(ISPのDNSサーバになる)は、プライマリ、セカンダリ両方のDNSサーバ情報を登録しておく必要があり、どちらに名前解決要求を送っても同じ結果が返ってくるようにする必要がある。
■DNSパケットのポート番号
名前解決では、UDP53ポートを使用
ゾーン転送では、TCP53ポートを使用する。