DNS について
DNS を設定するには、次の概念について理解しておく必要があります。
• 「DNS の概要」
DNS の概要
ネットワーク デバイスで、名前の割り当てを制御しないネットワークのデバイスとの接続が必要な場合、インターネットワーク全体でデバイスを一意に識別するデバイス名を割り当てることができます。インターネットのグローバル命名方式、DNS は、この作業を実行します。このサービスはデフォルトでイネーブルにされています。ここでは、DNS の概念および機能について説明します。
ネットワーク デバイスのホスト名
各固有の IP アドレスには、ホスト名を関連付けることができます。DNS は、ネットワーク ノードのホスト名を確立するために階層方式を使用します。これにより、クライアント/サーバ方式によるネットワークのセグメントのローカル制御が可能になります。DNS システムは、デバイスのホスト名をその関連する IP アドレスに変換することで、ネットワーク デバイスを検出できます。
ネットワークのグループのドメイン名
IP は、IP での検出によりデバイスを識別できる命名方式を定義します。これは、 ドメイン に提供される階層命名方式です。インターネットでは、ドメインは、組織タイプまたは地理的情報に基づいたネットワークの一般的なグループ分けを示す命名階層ツリーの一部です。ドメイン名の区切りとしては、ピリオド(.)を使用します。たとえば、Cisco は、IP で com というドメイン名で識別される商業組織であるため、ドメイン名は cisco.com となります。このドメイン内の特定のデバイス、たとえば File Transfer Protocol(FTP; ファイル転送プロトコル)システムは、 ftp.cisco.com で表されます。
ネーム サーバ
ドメイン名を追跡するため、IP は、ネーム サーバの概念を定義します。ネーム サーバは、ドメイン ツリーの名前空間部分に関する完全な情報を持ち、また場合によっては、ドメイン ツリーの他の部分からの情報を参照するときに使用できる他のネーム サーバへのポインタを含むプログラムです。ネーム サーバは、完全な情報を持つドメイン ツリーの部分を認識します。また、ネーム サーバは、ドメイン ツリーの他の部分に関する情報を保存することもできます。ドメイン名を IP アドレスにマッピングするには、まずホスト名を識別して、ネーム サーバを指定して、DNS サービスをイネーブルにする必要があります。
キャッシュ
名前をアドレスに変換するプロセスを高速化するため、ネーム サーバは、hostname-to-address マッピングに関するキャッシュと呼ばれるデータベースを保守します。これは、 connect 、 telnet 、 ping EXEC コマンド、および関連する Telnet サポート操作により使用されます。キャッシュには、以前の応答の結果が保存されます。ネーム サーバは、クライアントが発行した DNS クエリーを受信すると、このローカル ストレージをチェックして、その回答をローカルで使用できるかどうか確認します。
ネーム リゾルバ
ネーム リゾルバは、クライアント要求に応答してネーム サーバから情報を抽出するプログラムです。リゾルバは、少なくとも 1 つのネーム サーバにアクセスできる必要があります。リゾルバは、ネーム サーバの情報を使用してクエリーに直接応答するか、他のネーム サーバへの参照を使用してクエリーを追跡します。リゾルバは、一般的に、ユーザ プログラムに直接アクセスできるシステム ルーチンです。そのため、リゾルバとユーザ プログラム間にプロトコルは必要ありません。
ゾーン
ドメイン名前空間は、DNS ツリーの委任ポイントである、 ゾーン と呼ばれるエリアに分割されます。ゾーンには、他のゾーンに権限があるものを除き、特定のポイント以下のすべてのドメインが含まれます。
権限ネーム サーバ
ネーム サーバは、完全な情報を持つドメイン ツリーの部分の 認証局 と呼ばれます。ゾーンには、通常、権限ネーム サーバがあります(通常複数あります)。 権限ネーム サーバは、ホスト テーブル情報が設定されるか、 ゾーン転送 を介してホスト テーブル情報を取得します(これは、セカンダリ DNS サーバが起動し、プライマリ サーバからそれ自体を更新するときに発生するアクションです)。
DNS の動作
組織は、多くのネーム サーバを使用できますが、インターネット クライアントは、ルート ネーム サーバが認識するネーム サーバだけをクエリーできます。他のネーム サーバは、内部クエリーだけに応答します。
ネーム サーバは、次に示すように、特定のゾーン内でローカルに定義されるホストの DNS サーバに対してクライアントが発行したクエリーを処理します。
• 権限ネーム サーバは、独自のホスト テーブルの永続的なエントリおよびキャッシュされたエントリを使用して、認証局のゾーン下にあるドメイン ネームの DNS ユーザ クエリーに応答します。認証局のゾーン下にあるが、その設定情報がないドメイン名にクエリーが発行された場合、権限ネーム サーバは、このような情報が存在しないことを示すだけです。
• 権限ネーム サーバとして設定されていないネーム サーバは、以前受信されたクエリー応答からキャッシュに保存された情報を使用して、DNS ユーザ クエリーに応答します。ルータがゾーンの権限ネーム サーバとして設定されていない場合、ローカルに定義されたホストの DNS サーバへのクエリーは、権限のない応答を受け取ります。
ネーム サーバは、特定のドメインに設定された転送および参照パラメータに従い、DNS クエリーに応答します(着信 DNS クエリーを転送するか、内部的に生成された DNS クエリーを解決します)。
DNS クエリーが解決のためにネーム サーバに転送された場合、該当する応答が受け取られるまで、またはタイムアウトになるまで、対応する DNS クエリーのためのメモリ スペースがいくつか保持されます。頻繁にクエリーを処理するときにフリー I/O メモリがなくならないようにするには、キューの最大サイズを設定します。
DNS の設定方法
ここでは、次の手順について説明します。
• 「ホスト名から IP アドレスへのマッピング」
• 「DNS のカスタマイズ」
• 「DNS スプーフィングの設定」
• 「DNS サーバとしてのルータの設定」
• 「ISO CLNS アドレスの DNS クエリーのディセーブル化」
• 「DNS の確認」
ホスト名から IP アドレスへのマッピング
ホスト名を IP アドレスにマッピングするには、次の作業を実行します。
hostname-to-address マッピング
ネーム サーバは、ドメイン名に関連する情報の追跡に使用されます。ネーム サーバは、hostname-to-address マッピングのデータベースを保守できます。各名前は、1 つ以上の IP アドレスにマッピングできます。このサービスを使用して、ドメイン名を IP アドレスにマッピングするには、ネーム サーバを指定する必要があります。
名前参照システムは、この作業で説明するコマンドを使用して静的に設定できます。DHCP など、Cisco IOS ソフトウェアの他のいくつかの機能は、名前参照システムの状態をダイナミックに変更できます。キャッシュにあるホスト名および DNS 設定を表示するには、 show hosts コマンドを使用します。
手順の概要
1. enable
2. configure terminal
3. ip host name [ tcp-port-number ] address1 [ address2 ... address8 ]
4. ip domain name name
または
ip domain list name
5. ip name-server server-address1 [ server-address2 ... server-address6 ]
6. ip domain lookup [ source-interface interface-type interface-number ]
手順の詳細
|
|
|
ステップ 1 |
enable
Router> enable |
特権 EXEC モードをイネーブルにします。 • プロンプトが表示されたら、パスワードを入力します。 |
ステップ 2 |
configure terminal
Router# configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 3 |
ip host name [ tcp - port-number ] address1 [ address2 ... address8 ]
Router(config)# ip host cisco-rtp 192.168.0.148 |
ホスト名キャッシュにスタティック hostname-to-address マッピングを定義します。 • 通常、数値アドレスではなく、シンボリック名によりネットワーク デバイスを参照する方が簡単です(Telnet のようなサービスは、ホスト名またはアドレスを使用できます)。ホスト名および IP アドレスは、スタティックまたはダイナミックに相互に関連付けることができます。 • 手動によりホスト名とアドレスの関連付けは、ダイナミック マッピングが使用できない場合に役に立ちます。 |
ステップ 4 |
ip domain name name または ip domain list name
Router(config)# ip domain name cisco.com または
Router(config)# ip domain list cisco1.com |
(任意)Cisco IOS ソフトウェアが未修飾ホスト名を完了するときに使用するデフォルトのドメイン名を定義します。 または (任意)未修飾ホスト名を完了するデフォルトのドメイン名のリストを定義します。 • Cisco IOS ソフトウェアがドメイン名要求を完了するときに使用するデフォルトのドメイン名を指定できます。単一のドメイン名またはドメイン名のリストを指定できます。完全なドメイン名を含まないホスト名には、名前が参照される前に、指定したデフォルトのドメイン名が追加されます。 コマンドの場合、システムが一致を検出するまでそれぞれをチェックする、ドメインのリストを定義できます。 |
ステップ 5 |
ip name-server server-address1 [ server-address2 ... server-address6 ]
Router(config)# ip name-server 172.16.1.111 172.16.1.2 |
DNS の名前情報を提供するためにネーム サーバとして機能できる 1 台以上のホスト(最高 6 台)を指定します。 |
ステップ 6 |
ip domain lookup [ source-interface interface-type interface-number ]
Router(config)# ip domain lookup |
(任意)DNS-based アドレス転送をイネーブルにします。 • DNS はデフォルトでイネーブルにされています。DNS がディセーブルの場合、このコマンドを使用します。 |
DNS のカスタマイズ
DNS 設定をカスタマイズするには、次の作業を実行します。
DNS Round-Robin の動作
DNS Round-Robin 機能のない複数サーバ設定の場合、多くのプログラムは、キャッシュ全体の Time to Live(TTL; 存続可能時間)に最初のホスト サーバ/IP アドレスを使用し、ホスト障害が発生した場合だけ、2 番めおよび 3 番めのホスト サーバ/IP アドレスを使用します。この動作により、大勢のユーザが TTL 時間中に最初のホストにすべて到達すると問題が発生します。たとえば、Network Access Server(NAS; ネットワーク アクセス サーバ)は、DNS クエリーを送信します。DNS サーバは、設定された IP アドレスのリストにより NAS に応答します。NAS は、指定時間内(たとえば 5 分)でこれらの IP アドレスをキャッシュします。5 分間の TTL 時間中にダイヤルインしたユーザは、すべて、リストの最初の IP アドレスにある 1 台のホストに到達します。
DNS Round Robin 機能を使用した複数サーバ設定では、DNS サーバは、ホスト名のキャッシュを使用してすべてのホストの IP アドレスを返します。キャッシュの TTL 中、ユーザはホスト間で分散されます。この機能は、設定されたホスト間でコールを分散することで、DNS クエリーの数を減らします。
スケジューリング アルゴリズムでは、プロセスは一定のサイクル順序でアクティブになります。子プロセスの終了や入出力操作など、他のイベントを待機するプロセスは、処理を続行できないため、制御をスケジューラに返します。(待機中の)イベントが発生する前に、プロセスの TTL がタイムアウトになった場合、このイベントは、他のすべてのプロセスがアクティブになるまで処理されません。
(注) DNS Round Robin 機能は、ルータの DNS 参照だけに適用され、このルータを示す別のクライアントには適用されません。
手順の概要
1. enable
2. configure terminal
3. ip domain timeout seconds
4. ip domain retry number
5. ip domain round-robin
手順の詳細
|
|
|
ステップ 1 |
enable
Router> enable |
特権 EXEC モードをイネーブルにします。 • プロンプトが表示されたら、パスワードを入力します。 |
ステップ 2 |
configure terminal
Router# configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 3 |
ip domain timeout seconds
Router(config)# ip domain timeout 17 |
(任意)DNS クエリーへの応答を待機する時間を指定します。 • ip domain timeout コマンドが設定されていない場合、Cisco IOS ソフトウェアは、DNS クエリーへの応答を 3 秒間待機します。 |
ステップ 4 |
ip domain retry number
Router(config)# ip domain retry 10 |
(任意)DNS クエリーの送信を試行する回数を指定します。 • ip domain retry コマンドが設定されていない場合、Cisco IOS ソフトウェアは、DNS クエリーを 2 回再試行します。 |
ステップ 5 |
ip domain round-robin
Router(config)# ip domain round-robin |
(任意)DNS サーバで Round Robin 機能をイネーブルにします。 |
DNS スプーフィングの設定
DNS スプーフィングを設定するには、次の作業を実行します。
DNS スプーフィングは、ルータをプロキシ DNS サーバとして機能させ、 ip dns spoofing ip-address コマンドで設定された IP アドレスまたはクエリーの着信インターフェイスの IP アドレスのいずれかを使用して任意の DNS クエリーへの応答を「スプーフ」できるようにします。この機能は、Internet Service Provider(ISP; インターネット サービス プロバイダー)へのインターフェイスが稼動状態にないデバイスで役に立ちます。ISP へのインターフェイスが稼動状態になると、ルータは、DNS クエリーを実際の DNS サーバに転送します。
この機能は、DNS スプーフィングを有効にして、次の条件が満たされている場合に機能します。
• no ip domain lookup コマンドが設定されている。
• IP ネーム サーバ アドレスが設定されていない。
• 設定されているネーム サーバ アドレスに送信するための有効なインターフェイスまたはルートがない。
これらの条件が満たされていない場合、DNS スプーフィングは機能しません。
手順の概要
1. enable
2. configure terminal
3. ip dns server
4. ip dns spoofing [ ip-address ]
手順の詳細
|
|
|
ステップ 1 |
enable
Router> enable |
特権 EXEC モードをイネーブルにします。 • プロンプトが表示されたら、パスワードを入力します。 |
ステップ 2 |
configure terminal
Router# configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 3 |
ip dns server
Router(config)# ip dns server |
ルータで DNS サーバをアクティブにします。 |
ステップ 4 |
ip dns spoofing [ ip-address ]
Router(config)# ip dns spoofing 192.168.15.1 |
DNS スプーフィングを設定します。 • 独自のホスト名以外のホスト名にクエリーが発行された場合、ルータは、設定されている ip-address を使用して DNS クエリーに応答します。 • 独自のホスト名にクエリーが発行された場合、ルータは、着信インターフェイスの IP アドレスを使用して DNS クエリーに応答します。 |
DNS サーバとしてのルータの設定
DNS サーバとしてルータを設定するには、次の作業を実行します。
Cisco IOS ルータは、キャッシング ネーム サーバおよび独自のローカル ホスト テーブルの権限ネーム サーバとして機能して、サービスを DNS クライアントに提供できます。
キャッシング ネーム サーバとして設定される場合、ルータは、ネットワーク名をネットワーク アドレスを解決する他のネーム サーバに DNS 要求をリレーします。キャッシング ネーム サーバは、他のネーム サーバから学習した情報をキャッシュします。そのため、トランザクションごとに他のサーバにクエリーすることなく、要求にすばやく応答できます。
独自のローカル ホスト テーブルの権限ネーム サーバとして設定されている場合、ルータは、DNS クエリーのポート 53 でリスニングして、その独自のホスト テーブルの永続的なエントリおよびキャッシュされたエントリを使用して DNS クエリーに応答します。
権限ネーム サーバの役割
権限ネーム サーバは、通常、ゾーン転送を発行するか、同じゾーンの他の権限ネーム サーバからのゾーン転送要求に応答します。ただし、Cisco IOS DNS サーバは、ゾーン転送を実行しません。
権限ネーム サーバが、DNS クエリーを受信すると、次のようにクエリーを処理します。
• 認証局のゾーン下にないドメイン名に対するクエリーの場合、権限ネーム サーバは、IP DNS-based hostname-to-address 変換が ip domain lookup コマンドによりイネーブルにされているかどうかに基づいて、クエリーを特定のバックエンド ネーム サーバに転送するかどうかを判別します。
• 認証局のゾーン下にあり、設定情報があるドメイン名に対するクエリーの場合、権限ネーム サーバは、独自のホスト テーブルの永続的なエントリおよびキャッシュされたエントリを使用してクエリーに応答します。
• 認証局のゾーン下にあるが、設定情報がないドメイン名に対するクエリーの場合、権限ネーム サーバは、クエリーを転送せず、このような情報が存在しないことを示すだけです。
制約事項
分散ディレクタがイネーブルにされていない限り、ローカルで定義されたリソース レコードの TTL は、常に 10 秒に設定されます。これは、authority record パラメータが、 ip dns primary コマンドを使用して DNS ネーム サーバに指定されているかどうかに関係ありません。
手順の概要
1. enable
2. configure terminal
3. ip dns server
4. ip name-server server-address1 [ server-address2 ... server-address6 ]
5. ip dns server queue limit { forwarder queue-size-limit | director queue-size-limit }
6. ip host [ vrf vrf-name ] [ view view-name ] hostname { address1 [ address2 ... address8 ] |
additional address9 [ address10 ... addressn ]}
7. ip dns primary domain-name soa primary-server-name mailbox-name [ refresh-interval [ retry-interval
[ expire-ttl [ minimum-ttl ]]]]
8. ip host domain-name ns server-name
手順の詳細
|
|
|
ステップ 1 |
enable
Router> enable |
特権 EXEC モードをイネーブルにします。 • プロンプトが表示されたら、パスワードを入力します。 |
ステップ 2 |
configure terminal
Router# configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 3 |
ip dns server
Router(config)# ip dns server |
DNS サーバをイネーブルにします。 |
ステップ 4 |
ip name-server server-address1 [ server-address2 ... server-address6 ]
Router(config)# ip name-server 192.168.2.120 192.168.2.121 |
(任意)他の DNS サーバを設定します。 • Cisco IOS リゾルバ ネーム サーバ • DNS サーバ フォワーダ (注) Cisco IOS ネーム サーバが権限のあるドメイン名だけに応答するように設定される場合、他の DNS サーバを設定する必要はありません。 |
ステップ 5 |
ip dns server queue limit { forwarder queue-size-limit | director queue-size-limit }
Router(config)# ip dns server queue limit forwarder 10
|
(任意)DNS サーバ プロセスにより使用されるキューのサイズに制限を設定します。 • director キーワードは、Cisco IOS Release 12.4(24)T 以降から削除されました。 |
ステップ 6 |
ip host [ vrf vrf-name ] [ view view-name ] hostname {address1 [ address2 ... address8 ] | additional address9 [ address10 ... addressn ]}
Router(config)# ip host user1.example.com 192.168.201.5 192.168.201.6 |
(任意)ローカル ホストを設定します。 |
ステップ 7 |
ip dns primary domain-name soa primary-server-name mailbox-name [ refresh-interval [ retry-interval [ expire-ttl [ minimum-ttl ]]]]
Router(config)# ip dns primary example.com soa ns1.example.com mb1.example.com |
ドメイン(ゾーン)のプライマリ DNS ネーム サーバおよび Start of Authority(SOA)レコード ソース(ゾーンの開始を指定します)としてルータを設定します。 (注) 分散ディレクタがイネーブルにされていない限り、ローカルで定義されたリソース レコードの TTL は、常に 10 秒に設定されます。 |
ステップ 8 |
ip host domain-name ns server-name
Router(config)# ip host example.com ns ns1.example.com |
(任意)関連するドメインに対して DNS サーバがクエリーされたときに返される Name Server(NS; ネーム サーバ)リソース レコードを作成するようにルータを設定します。 • この設定が必要になるのは、システムに権限があるゾーンが他のネーム サーバからもサービスが提供される場合だけです。 |
DNS クエリーを別のネーム サーバにリレーするときのデバッグ出力:例
次に、ルータがその独自のローカル ホスト テーブルの権限ネーム サーバとして設定されている場合に DNS クエリーを別のネーム サーバにリレーするときの debug domain コマンドの出力例を示します。
Apr 4 22:18:32.183: DNS: Incoming UDP query (id#18713)
Apr 4 22:18:32.183: DNS: Type 1 DNS query (id#18713) for host 'ns1.example.com' from 192.0.2.120(1283)
Apr 4 22:18:32.183: DNS: Re-sending DNS query (type 1, id#18713) to 192.0.2.121
Apr 4 22:18:32.211: DNS: Incoming UDP query (id#18713)
Apr 4 22:18:32.211: DNS: Type 1 response (id#18713) for host <ns1.example.com> from 192.0.2.121(53)
Apr 4 22:18:32.215: DOM: dom2cache: hostname is ns1.example.com, RR type=1, class=1, ttl=86400, n=4
Apr 4 22:18:32.215: DNS: Forwarding back A response - no director required
Apr 4 22:18:32.215: DNS: Finished processing query (id#18713) in 0.032 secs
Apr 4 22:18:32.215: DNS: Forwarding back reply to 192.0.2.120/1283
ローカル ホスト テーブルからの DNS クエリーにサービスを提供するときのデバッグ出力:例
次に、ルータがその独自のローカル ホスト テーブルの権限ネーム サーバとして設定されている場合にローカル ホスト テーブルからの DNS クエリーにサービスを提供するときの debug domain コマンドの出力例を示します。
Apr 4 22:16:35.279: DNS: Incoming UDP query (id#8409)
Apr 4 22:16:35.279: DNS: Type 1 DNS query (id#8409) for host 'ns1.example.com' from 192.0.2.120(1279)
Apr 4 22:16:35.279: DNS: Finished processing query (id#8409) in 0.000 secs
ISO CLNS アドレスの DNS クエリーのディセーブル化
International Organization for Standardization(ISO; 国際標準化機構)Connectionless Network Service(CLNS; コネクションレス型ネットワーク サービス)アドレスの DNS クエリーをディセーブルにするには、次の作業を実行します。
ルータで IP および ISO CLNS の両方がイネーブルにされているときに、ISO CLNS Network Service Access Point(NSAP; ネットワーク サービス アクセス ポイント)アドレスを使用する場合、RFC 1348 で説明されているように、DNS を使用してこれらのアドレスをクエリーできます。この機能は、デフォルトでイネーブルにされています。
手順の概要
1. enable
2. configure terminal
3. no ip domain lookup nsap
手順の詳細
|
|
|
ステップ 1 |
enable
Router> enable |
特権 EXEC モードをイネーブルにします。 • プロンプトが表示されたら、パスワードを入力します。 |
ステップ 2 |
configure terminal
Router# configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 3 |
no ip domain lookup nsap
Router(config)# no ip domain lookup nsap |
ISO CLNS アドレスの DNS クエリーをディセーブルにします。 |
DNS の確認
DNS 設定を確認するには、次の作業を実行します。
1. enable
2. ping hosts
3. show hosts
手順の詳細
|
|
|
ステップ 1 |
enable
Router> enable |
特権 EXEC モードをイネーブルにします。 • プロンプトが表示されたら、パスワードを入力します。 |
ステップ 2 |
ping hosts
Router# ping cisco-rtp |
基本ネットワーク接続を診断します。 • DNS 設定が指定された後で、ホスト名を使用してデバイスを ping または telnet することで DNS サーバを確認できます。 |
ステップ 3 |
show hosts
Router# show hosts |
デフォルトのドメイン名、名前検索サービスの方式、ネーム サーバ ホスト名のリスト、およびキャッシュに格納されているホスト名とアドレスのリストを表示します。 • DNS を使用して名前が解決されたら、 show hosts コマンドを使用して、キャッシュされたホスト名と DNS 設定を表示します。 |