DNSフォワーディング(転送)とは一体何をしているのか?

レンタルサーバーを運用していると必ず出てくる「DNS」。

DNS関連の説明を聞くと、「再帰問い合わせ」や「権威サーバー」や「委譲」など堅苦しい用語が出てきますが、難しく考える必要はありません。

単純に名前を解決しているだけです。

もっと言うと、「www.yahoo.co.jp」を問い合わせたら、IPアドレス「xxx.xxx.xxx.xxx」が返ってくるというだけのシステムです。(結構端折っていますが)

 

$ nslookup www.yahoo.co.jp ← www.yahoo.co.jpのIPアドレスを問い合わせた
Server:         xxx.xxx.xxx.xxx
Address:        xxx.xxx.xxx.xxx#53

Non-authoritative answer:
www.yahoo.co.jp canonical name = edge.g.yimg.jp.
Name:   edge.g.yimg.jp
Address: 183.79.249.124 ← 問い合わせたら、このIPアドレスが返ってきた

$ nslookup google.co.jp ← google.co.jpのIPアドレスを問い合わせた
Server:         xxx.xxx.xxx.xxx
Address:        xxx.xxx.xxx.xxx#53

Non-authoritative answer:
Name:   google.co.jp
Address: 216.58.197.163 ← 問い合わせたら、このIPアドレスが返ってきた

 

 

特に普段からネットワーク関連の業務をしていないといまいちイメージしにくいですが、今回は DNS フォワーディング(DNS 転送)について解説します。

DNS の知識があると万が一レンタルサーバーでうまくつながらない時があっても、落ち着いて対処することができるようになります。

 

 

自分が名前解決できない時にフォワーディングする

DNS フォワーディングとは、クライアントPC(リゾルバ)からホスト名の名前解決受けた DNS サーバーが対象のゾーン情報(対象のホストと IP アドレスの一覧表)を持っていない場合、他の DNS サーバーに名前解決をしてくださいと、フォワーディングする(転送する)ことを言います。

 

あらかじめフォワーディング設定をしておかなければフォワーディングしない

フォワーディング先の DNS サーバーはあらかじめサーバーに登録しておく必要があります。

そして、転送先の DNS サーバーが問い合わせに対して回答したものを、あたかも自分が名前解決をしたかのように回答する。

もっと詳しくいうと、DNS クエリを転送します。

 

DNS サーバーがあたかもリゾルバになったかのような動きをする

基本的に DNS サーバーは各ゾーンを個別管理をしています。

「.jp」ゾーンを管理していたり、「.co.jp」ゾーンを管理していたり、「tama.co.jp」ゾーンを管理しています。

しかし、全ゾーンを1台の DNS サーバーが管理しているわけではないので、自分が管理していないゾーンの問い合わせもあります。

その場合、外部の DNS サーバーへ問い合わせをしますが、DNS フォワーディング設定がされている場合は、特定のドメインに対して、あらかじめ登録している DNS サーバーへ「再帰問い合わせ」をします。

通常の DNS サーバーの名前解決は、のちに図が出てきますが、クライアントPC(リゾルバ)から問い合わせが来たら最後まで責任を持って名前解決をしますが、DNS フォワーディングの場合は「丸投げをする」というところが異なります。

下図を見ると、やまちゃんから問い合わせを受けたネームサーバーが、フォワーディング先のネームサーバーに丸投げしていることが分かります。

 

注目点は、クライアント PC から「再帰クエリ」を受けた DNS サーバーが「反復クエリ」をするのではなく、あたかも自分がクライアント PC(リゾルバ)になったかのように、フォワーディング設定をしている DNS サーバーへ「再帰クエリ」をするという所です。

※通常「反復問い合わせ」をしている DNS サーバーが、DNS フォワーディングの場合は「再帰問い合わせ」をしています。

 

 

BIND での DNS フォワーディングの設定

BIND での DNS フォワーディングの設定について解説します。

フォワーディング(forwarders)の設定を入れることで、リゾルバからの問い合わせに対する回答を持っていない場合(ゾーンファイルもキャッシュもない場合)に指定された DNS サーバーに問い合わせを転送します。

転送先の DNS サーバーは1つでも複数の指定でも可能です。

 

 

■管理外のドメイン全体をフォワーディングしたい場合

options セクションでフォワーディング(転送)したい DNS サーバーを指定します。

options ステートメントでグローバルオプション(BIND 全体に適用される)を指定できます。

グローバルオプションは他のステートメントのデフォルトになります。

options {

 

    ~ 省略 ~

 

        forwarders {100.100.100.5;}; ← 転送する DNS サーバーの IP アドレスを指定します。
        forward only; ← 転送方法をしています。

 

    ~ 省略 ~

};

 

 

 

■特定のドメインに対してフォワーディングしたい場合

zone の設定の中でフォワーディング(転送)したい DNS サーバーを指定します。

zone ステートメントで権限を持つゾーンに対する固有のオプションを定義します。

[root@ip-172-31-38-38 ~]# vi /etc/named.conf

 

~ 省略 ~

 

zone “tama-chan.com” 

    type forward; ← ゾーンのタイプを指定します。 
    forward only; 
    forwarders 
    { 
        1.1.10.111; 
    }; 
};

 

~ 省略 ~

 

 

 

「再帰問い合わせ」と「反復問い合わせ」とは?

レンタルサーバーをしっかり管理をしようと思い、DNS について調べているとよく出てくる「再帰問い合わせ」や「反復問い合わせ」ですが、何をしているのか名前からでは想像もつきませんよね。

図で確認するのが一番イメージしやすいのですが、まずは用語の整理から。

  • 再帰問い合わせ(再帰クエリ)

リゾルバから DNS サーバへ問い合わせ、最終的に回答する問い合わせのこと。

  • 反復問い合わせ(反復クエリ)

DNS サーバーが外部 DNS サーバーに「.com」の問い合わせ→「example.com」の問い合わせ →「mail.example.com」というように繰り返し問い合わせて回答を得る問い合わせのこと。

 

まとめ

  • リゾルバ → ざっくり言うとクライアントPCに入っているDNSサーバーへ名前解決を問い合わせるプログラム
  • ネームサーバー → DNSサーバーの別名。ネームサーバー=DNSサーバー。
  • フォワーディング → 自分で解決せずにフォワード先のDNSサーバーに丸投げすること。
  • 再帰問い合わせ → 再帰クエリ。名前解決の問い合わせ。一回再帰クエリを出せば、あとは回答が返ってくるのを待つだけ。
  • 反復問い合わせ → 反復クエリ。欲しい回答が返ってくるまで次々とDNSサーバーに問い合わせを投げ続けること。

※resolveとは、「決意する、解決する、分解する」という意味です。

 

 

 

 

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

AlphaOmega Captcha Medica  –  What Do You See?
     
 

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください