DNS(Domain Name System)とは
パケットを送信するときにドメイン名からIPアドレスを解決する仕組み。
ドメイン名(またはホスト名)とIPアドレスを関連付けて解決することを名前解決という。名前解決にはドメイン名からIPアドレスを解決する正引きと、IPアドレスからドメイン名を解決する逆引きがある。
DNSでは、名前解決を行うことをDNSルックアップとも呼ぶ。
インターネット上でホストを一意に特定することができる完全なドメイン名をFQDN(Fully Qualified Domain Name:完全修飾ドメイン名)という。
DNSの構造
DNSはドメイン名とIPアドレスを管理するが、世界中すべてのドメインを1台のサーバで把握することは不可能なため、ドメイン名とIPアドレスのデータを複数のDNSサーバで分散して管理する。
その際、ドメインの範囲を分けて分散して管理するために、階層構造をとっている。
jpを管理するDNSサーバ、coを管理するDNSサーバといったように、それぞれ管理するドメインが分かれている。それぞれのドメイン情報を保持しているサーバを権威サーバ(DNSコンテンツサーバ) という。
各DNSサーバは自分の階層の1つ下の階層を管理しているDNSサーバのIPアドレスのみ知っている。
上図では、jpドメインを管理しているDNSサーバは、coやneを管理しているDNSサーバのみ把握しており、shoeishaやwwwを管理しているDNSサーバは知らない。
DNSの各種用語
DNSでは、正引きや逆引きで名前解決を行う仕組みやそのプログラムをリゾルバと呼ぶ。リゾルバはさらに2つに分類される。
-
スタブリゾルバ
クライアントの名前解決要求をフルサービスリゾルバに問い合わせる。
DNSクライアント側 がスタブリゾルバで、問い合わせのみ行う。
-
フルサービスリゾルバ
スタブリゾルバから問い合わせを受けた 名前解決要求に対して応答を返す 。
自身のキャッシュに保存されている内容の場合はその情報を返し、保存されていない場合は権威DNSサーバ(下記参照)に問い合わせを行って得た情報をスタブリゾルバ(DNSクライアント)に返す。
また、DNSサーバも動作によって2つに分類される。
-
キャッシュDNSサーバ(DNSキャッシュサーバ)
DNSクライアントからの要求を最初に受けるDNSサーバ。ここには、キャッシュとして過去に権威DNSサーバに問い合わせた内容が残っている。
通常はキャッシュDNSサーバがフルサービスリゾルバとして動作する。
-
権威DNSサーバ(DNSコンテンツサーバ)
問い合わせを受けた際に、管理しているドメインの情報を返す。
ドメインのIPアドレスを保持している場合、IPアドレスなどの情報を返す。
DNSの一連の流れ
DNSクライアント(スタブリゾルバ)がキャッシュDNSサーバ(フルサービスリゾルバ)へ要求を送り、キャッシュDNSサーバが権威DNSサーバとやり取りして名前解決を行う
DNSの動作
上の図のようにPCからwww.shoeisha.co.jpに接続する際、以下の手順で問い合わせを行う。
- PCに登録されているDNSサーバに問い合わせをする(今回はキャッシュDNSサーバ)
- キャッシュDNSサーバの中に対象の情報があれば、そのままPCにIPアドレスを教える。キャッシュがなかった場合、権威DNSサーバの最上位に位置するルートサーバに問い合わせる。
- 問い合わせを受けた権威DNSサーバは次のドメインを管理しているサーバに問い合わせる。
- shoeishaドメインを管理しているサーバはwwwのIPアドレスの情報を持っているため、問い合わせに対して対応するIPアドレスを応答する。
- キャッシュDNSサーバが応答を受け取り、次からはすぐに返答できるようにキャッシュに保存し、PCに結果を通知する。
上図のDNSクライアントとキャッシュDNSサーバ間のやり取り(①と⑩)を再帰問い合わせ、 キャッシュDNSサーバと権威DNSサーバ間のやり取り(②~⑨)を反復問い合わせという。
DNSの各種設定
DNSによる名前解決
DNSによる名前解決を行うためには、ルータでDNSルックアップを有効化する(DNSクライアントとして動作させる)必要がある。
(config)#ip domain-lookup
このコマンドはデフォルトで有効となる。
DNSルックアップの確認
以下のような表示になればOK
#ping test.com
Translating "test.com"...domain server (255.255.255.255)
% Unrecognized host or address, or protocol not running.
CiscoルータではDNSサーバのアドレスを設定していない場合、デフォルトで255.255.255.255宛のブロードキャストを使用して同一ネットワーク内のDNSサーバを探してしまう。そのため、別途手動でDNSサーバのアドレスを設定する必要がある。
DNSサーバのアドレス設定
(config)#ip name-server <DNSサーバのIPアドレス1> <DNSサーバのIPアドレス2(なくても大丈夫)>
DNSサーバは最大6台まで指定できる。複数指定した場合は左に記述したDNSサーバ(上記ではDNSサーバのIPアドレス1)から順に使用される。
優先DNSサーバが障害などで応答しない場合は次のDNSサーバ(上記ではDNSサーバのIPアドレス2)に問い合わせを行う。
最初に利用されるDNSサーバを優先DNSサーバといい、
次に使用されるサーバを代替DNSサーバという。
手動でホスト名とIPアドレスを登録
手動であらかじめホスト名とIPアドレスを登録することもできる。
この設定を行うと、ルータ自身のローカルな名前解決エントリ(スタティックDNSエントリ)として動作し、DNSサーバに問い合わせを行うことなく名前解決が可能になる(静的に名前解決)。
(config)#ip host <DNSサーバのIPアドレス1> <DNSサーバのIPアドレス2(なくても大丈夫)>
ドメイン名の設定
手動でドメイン名を設定することもできるが、DHCPを使用して設定することもできる。
今回は手動で設定をする。
(config)#ip domain-name <ドメイン名>
名前解決情報の表示
ルータが保持している静的・動的なDNS情報を確認する。
実行すると、設定されているDNSサーバのIPアドレスやDNSサーバによって動的に名前解決した情報、ip hostコマンドによって手動で静的に解決した情報の一覧が表示される。
#show hosts
参考
林口 裕志; 浦川 晃. シスコ技術者認定教科書 CCNA 完全合格テキスト&問題集[対応試験]200 -301. 株式会社 翔泳社.