このページでは固定IPアドレス一個で運用するDNSサーバースレーブDNSサーバーの選定と設定について初心者向けに解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
固定IPでDNSサーバー構築

固定IPでDNSサーバー構築

ブートファイルの基本設定

WAN用ゾーンファイルの作成

ポートフォワーディングの設定

WAN空間からのDNSチェック

スレーブDNSサーバーの設置

DNSサーバとドメイン名の登録

レコードの書き換えについて


スレーブDNSサーバーの動作と設定

マスター DNSサーバー のバックアップである スレーブDNSサーバー の動作を文章で説明すると、

「あるゾーンファイルについて一定時間ごとにマスターDNSサーバーに問い合わせを行い、それが現在自分の保有しているゾーンファイルより新しい場合は自動的に自分自身のゾーンファイルの差し替えを行い、マスターDNSサーバーと同じ 名前解決 情報を配信する DNSサーバーの仕組み。」

となります。

つまり、スレーブDNSサーバーという特定の サーバー機 が存在するわけでも、専用の アプリケーション デーモン を稼動させなければならないわけでもなく、スレーブDNSサーバーとは実は BIND の一つの動作様式を指す言葉に過ぎません。

これまで解説してきた "/etc/named.conf" のゾーン情報の記述は、いずれもマスター情報です。

内容の一部を抜粋してみると、

options {
    directory "/var/named";
        .
        .
        .
};
        .
        .
        .
zone "obenri.com" IN {
    type master;
    file "obenri.com.wan.zone";
    allow-update { none; };

};

のように必ず、 "type master" の記述がありますが、これは、

「"/var/named/obenri.com.wan.zone"をゾーンファイルとして用いて名前解決の動作をせよ。」

という命令形式になります。

ところがこれを "type slave" に書き換えると、例えば、

options {
    directory "/var/named";
        .
        .
        .
};
        .
        .
        .
zone "obenri.com" IN {
    type slave;
    file "slaves/obenri.com.zone";
    masters { 211.183.111.3x; };

};

という記述になり、

IPアドレス "211.183.111.3x"のDNSサーバーからゾーン名"obenri.com"のゾーン情報を受け取って"/var/named/slaves/obenri.com.zone"というゾーンファイルして保存し、そのゾーンファイルを用いて名前解決をせよ。」

という命令形式になるわけです。

つまり、マスターとスレーブは、そのゾーン情報を自前で持つか、他のDNSサーバーから拝借するかが違うだけで、外部から参照するとマスターとスレーブの区別はなく、どちらも 「権威あるDNS情報」 として情報を配信することになります。

もちろん、ひとつの named プロセス だけで動作します。

というわけですから、一つのブートファイル "/etc/named.conf" にはマスターの記述とスレーブの記述を混在しても構いません。

また、一つのマスターDNSサーバーに対して複数のスレーブDNSサーバーをバックアップとすることも可能です。

スレーブDNSサーバーは、自分で設定できるのであればこのように意外に簡単な方法で設置が可能な仕組みになっています。

関連セクションへ 関連セクション・ 自宅内DNSサーバーの構築


このページの先頭へ↑

"named.conf"に直接設定する(してもらう)場合

DNSサーバーの設置について の説明のとおり、自分で複数の固定IPアドレスを契約していて複数のDNSサーバーを異なる グローバルIPアドレス 上で運用できるような環境だったり、信頼できる友人がDNSサーバーを運用しているような場合には、直接ブートファイルに記述する(記述してもらう)ことでスレーブDNSサーバーを設置する(設置してもらう)ことができます。

BINDのバージョンの違いによってもやはり設定は少し異なってきます。

スレーブDNSサーバーが BIND の場合は、このパートの冒頭の例のように設定すれば良いのですが、 これはあくまで WBEL CentOS に予め インストール されているBINDの例ですから、スレーブDNSサーバーの設置をお願いしようとしている相手の サーバー が別の ディストリビューション だったり、別の OS だったりすると設定が多少異なってきます。

また、BINDは非常に柔軟な設定が可能な アプリケーション ですし、同じ設定内容でも人によって記述方法はかなり異なる場合があります。

設定を行うのが自分自身、あるいはBINDの設定に精通している人であれば何の問題もないのですが、そうではない場合には色々な意味で骨が折れるかもしれません。

以下は WBEL CentOS での設定方法について説明しますが、どの環境でも設定の基本は同じですので、内容をよく理解できていれば決して難しいことはないと思います。

では、もう一度マスターDNSサーバーとスレーブDNSサーバーの "/etc/named.conf" の中の記述の違いを見比べてみましょう。

いずれも前半に デフォルト のゾーンファイルの パス として、

options {
    directory "/var/named";
        .
        .
        .
};

が記述されているものとします。

1) zone "obenri.com" IN {              マスターDNSサーバーの設定
2)     type master;
3)     file "obenri.com.wan.zone";
4)     allow-update { none; };

 };

1) zone "obenri.com" IN {               スレーブDNSサーバーの設定
2)     type slave;
3)     file "slaves/obenri.com.zone";
4)     masters { 211.183.111.3x; };

 };

1) はゾーン名の宣言です ゾーン名の宣言について(〜9.3.x)

マスターDNSサーバーとそのバックアップであるスレーブDNSサーバーは同じ ドメイン名 について 名前解決 を行いますので、ここの記述は必ず同じにします。

2) は動作タイプの宣言です。詳細はこのページの前のステップで説明したとおりですので説明は割愛します。

3) はゾーンファイルのパスとファイル名の指定です。

一般にマスターDNSサーバーでは管理者が直接編集して保存するファイルの名前とディレクトリの指定を意味しますが、スレーブDNSサーバーでは「マスターDNSサーバーから受け取った情報が自動的に保存されるファイルの名前とディレクトリ」を意味します。

ファイル名の重複にさえ気をつければ、実際のところはマスターとスレーブのゾーンファイルの格納ディレクトリは同じ "/var/named/" でも構いません。

しかしそれではユーザーが直接編集したゾーンファイルと自動で更新されるゾーンファイルが一つのディレクトリに混在してしまって紛らわしいので、スレーブのゾーンファイルは必ず別のディレクトリに保存するようにしてください。

ただしここで指定するディレクトリは、 システムアカウント "named" が読み書き可能なディレクトリとして 予め作成されていなければならない ことに注意してください。

困ったことにここで、 "secondary/obenri.com.zone" のように実在しないディレクトリを指定しても、 named は何事もなかったかのように起動します。しかし、実際にはゾーンデータの転送が行われませんから注意してください。

ちなみに WBEL CentOS の場合は、マスターDNSサーバーのゾーンファイルの保存場所から一階層下の "/var/named/slaves/" というディレクトリが適切な パーミッション で予め作成されていますので、特に理由がなければそのディレクトリをそのまま利用するのが良いでしょう。

当然ですが、プラットフォームが WindowsOS の場合、パスは "C:\" から始まり、ディレクトリの区切り文字は "\" になります。

このディレクトリ名はサーバーの環境によって異なることがありますから、WBELやCentOS以外のディストリビューションや別のOS上のBINDにスレーブDNSサーバーの設定を行うときは、先にスレーブDNSサーバーのゾーンの格納用ディレクトリの存在を確認しておきましょう。

マスターDNSサーバー→スレーブDNSサーバーへ転送されるのはゾーンファイルそのものではなく、マスターDNSサーバーでnamed デーモン の回答結果です。
なので、ゾーンデータの転送にファイル名は無関係、ということですね、

またこの設定では、マスターDNSサーバー上のゾーンファイル名とスレーブDNSサーバー上のゾーンファイル名が異なっていますが、 正引きゾーンファイルの記述について(〜9.3.x) の説明のとおり、保存するファイル名はなんでも構わないので特に問題はありません。

4) はマスターDNSサーバーとスレーブDNSサーバーでは命令の意味そのものが異なります。

マスターDNSサーバーの設定は「外部からのゾーンファイルの書き換えを許可しない」という意味になりますが、一方のスレーブDNSサーバーの設定は、 IPアドレス "211.183.111.3x"のDNSサーバーをマスターDNSサーバーとして扱う。」 という意味になりますから、ここは必ず自宅のグローバルIPアドレスを記述する(してもらう)ことになります。

適切な設定ができたところでnamedの再起動または設定の再読み込みを行うと namedのコントロールについて 、そのときに最初のゾーン転送が行われ、設定したファイル名でゾーンファイルが保存されます。

この転送されたゾーンファイル "/var/named/slaves/obenri.com.zone" は nanoエディタ nanoエディタについて cat コマンド などで内容を確認することができます。

転送されたゾーンファイルは、SOAレコードの中に記述されているパラメータに基づいて、マスターDNSサーバーへの参照及びアップデート、破棄などの処理が自動で行われるようになりますので、一度ゾーン転送が行われればスレーブサーバー側ではそれ以後は基本的に何もすることはありません。

ただしこの運用形態の場合は、自分や友人などが直接サーバーを操作できるわけですから、このスレーブDNSサーバー上のゾーンファイルを削除してnamedの再起動または設定の再読み込みを行うと namedのコントロールについて 、 Refresh時間 Refresh時間について の経過を待たずにスレーブDNSサーバーの情報を更新することができるというメリットがあります。

関連セクションへ 関連セクション・ 自宅内DNSサーバーの構築


このページの先頭へ↑

ISPにスレーブDNSサーバーの設置を依頼する場合

ISP によっては、固定 IPアドレス で通信契約を結んでいるユーザーにスレーブ DNSサーバー を提供してくれることがあります。

提供、といっても多くの場合は サーバー 委託料に加えて ドメイン名 あたりの管理手数料などを支払うのが普通です。

価格はもちろんISPによって様々ですが、サーバー委託料が\1,000〜/月、ドメイン管理手数料が\500〜/ドメイン名・月、くらいが相場のようです。

もちろん有料である分、信頼性は高いはずですから、資金的にゆとりがあるようでしたら悪い選択ではないでしょう。

スレーブDNSサーバーの利用の申し込み方法はISPによって様々ですのでここで一概にはいえませんが、利用頻度の多いサービスではないこともあって、 Webブラウザ 上のコントロールパネルなどからの申し込みではなく、書類の郵送などによる申し込みなどが一般的のようです。

ISPへのスレーブDNSサーバー設置の申し込みの流れとしては、

1.ISPに利用申請書を送る。

2.ISPから利用許諾書とマスターDNSサーバーに記述すべきパラメータなどの情報をもらう。

3.自宅のマスターDNSサーバーの設定を行い、設置ができた旨を連絡する。

4.ISPのオペレータがスレーブDNSサーバーへのゾーン転送を行い、ゾーンデータの内容を確認する。

となります。

このように「スレーブDNSサーバーの設置」という契約は、数あるISPとのオプション契約の中で「とても人間くさい」ものになりがちです。

ISPにスレーブDNSサーバーの設置を申し込むときの注意点は、 利用するための条件 をきちんと確認し、理解したうえで申し込むことに尽きます。

例えば、「マスターDNSサーバーのIPアドレスは自社が提供するものに限る。」とか、「転送可能なゾーン情報は自社を レジストラ として取得したものに限る。」といった具合ですので、自分が依頼しようとする諸々の条件がISPの制約に引っかかっていないかどうかは必ず確認しなければなりません。

またそういう制約があるケースでは、何らかの理由でISPを変更しなければならなくなったとき手続きが非常に面倒になることも覚えておきましょう。

DNSサーバーの設置は、その仕組みや方法が難解だということもあって、ある意味 「細かい部分の設定は DNS に精通した技術者の技術と良識、裁量に委ねられる。」 という色合いが強いので、こちらの考え方とISPのオペレータの考え方が異なる場合はスムーズに事が進まない場合があります。

例えば、SOAレコードに記述するDNSサーバーの FQDN や連絡先のメールアドレスなど SOAレコードの記述について BIND の動作に直接関係があるわけではなく、あくまで「対外的なマナー」として正しく記述すべきものですが、オペレーターによっては「形式的なことだから適当でいいですよ。」と対応してくれることもあれば、「きちんと記述していただかなければお受けできません。」と杓子定規な設定を求められることもあります。

同じISPでも、担当者が違うだけで姿勢が180度違う場合がありますからちょっと困りものではあります。

ここは事をスムーズに運ぶためにも、意固地にならずに相手に応じて臨機応変に対応する気持ちが大切だと思います。

関連セクションへ 関連セクション・ 自宅内DNSサーバーの構築


このページの先頭へ↑

フリー(または有料)のスレーブDNSサービスを利用する場合

日本国内では、お便利サーバー.comも利用させていただいている、

、海外では、

など、いくつかの無料スレーブ DNSサーバー の代行サービスがあります。

このようなサービスは利用できる ドメイン名 の制約などが比較的少ないのが特徴です。

申請や設定は普通 Webブラウザ 上から行い、自動で処理されますから、ある意味事務的に設定作業を進めることができます。

ただ、日本語の設定画面やヘルプなどが準備されていることはまずありませんので、それなりに外国語(普通は英語)が理解できなければならないという問題はあります。

フリーのスレーブDNSサーバーの設定画面(例:ZoneEdit)
フリーのスレーブDNSサーバーの設定画面(例:ZoneEdit)

また、フリーのDNSサーバーという性質上、安定性や信頼性に若干の不安は付きまといますが、個人の 公開サーバー 名前解決 を担わせるだけですからそこまで神経質になることもないでしょう。

スレーブDNSサーバーは一つだけでなく、複数稼動させても構いませんので、心配ならばいくつかのサービスと契約するのも一つの方法かもしれません。

もちろん海外にも有料のサービスはあります。

また、数は多くありませんが、数百円〜/ドメイン名・月、くらいであれば、日本国内でもスレーブDNSサーバー代行業者はありますから、「外国語に悩むくらいなら少しくらいお金を払ってもいい。」という方はそういう選択肢も悪くないと思います。

関連セクションへ 関連セクション・ 自宅内DNSサーバーの構築


このページの先頭へ↑

ゾーンファイルへのNSレコードの追加記述など

利用するスレーブ DNSサーバー が決まったら、そのDNSサーバーの FQDN "/var/named/obenri.com.wan.zone" NSレコード NSレコードについて として追加記述します。

たとえば、スレーブDNSサーバーのURLが "dns0.example.com" "dns1.example.com" だとすると、

スレーブDNSサーバーの ドメイン名 "obenri.com" ではありませんので、ドメイン名の部分の記述は省略できません。
また完全記述ですので、末尾に ".(ピリオド)" を付けるのを忘れないようにしてください。 末尾の.の意味について
$TTL 120
@    IN   SOA   web1   dnsadmin (
        2007022601   ; Serial
        120       ; Refresh
        15M       ; Retry
        1W       ; Expire
        120 )      ; Minimum

            IN   NS   web1
            IN   NS   dns0.example.com.
            IN   NS   dns1.example.com.

            IN   MX   10   mail
web1          IN   A    211.183.111.3x
mail          IN   A    211.183.111.3x
www           IN   A    211.183.111.3x

スレーブDNSサーバーを追加記述した"obenri.com.wan.zone"

と記述したうえでスレーブDNSサーバーにゾーン転送を行ってもらうようにします。

また、委託先によっては サーバー への負荷を減らすために、 "TTL" "refresh" の値の下限を定めていることがありますので、こういう場合はそれぞれのパラメータを修正する必要があるかもしれません。

"/var/named/obenri.com.wan.zone" への追加設定及び設定の修正が終わったらファイルを保存し、 named の再起動または設定の再読み込みを行い、スレーブDNSサーバーを正式に稼動させるよう、手続きを行ってください。

関連セクションへ 関連セクション・ 自宅内DNSサーバーの構築


このページの先頭へ↑

スレーブDNSサーバーの動作確認

スレーブDNSサーバーの設置ができたら動作確認を行います。

確認はネットワーク コマンド で、お使いのパソコンからでも 構築中のLinuxサーバー からでも行うことができますが、 nslookup コマンドで、

nslookup [自分で設定している FQDN ] [スレーブDNSサーバーのFQDN(または IPアドレス )]

と実行するのが簡単です。そして、

スレーブDNSサーバーに逆引きの FQDN が設定されていないときは、代わりに ルートサーバー の情報が盛大に表示されることがあります。もちろん異常ではありませんので驚かないでください。
C:\> nslookup www.obenri.com dns0.example.comEnter
Server:  ["dns0.example.com"またはその正引きのIPアドレスまたはその逆引きのFQDN]
Address: ["dns0.example.com"の正引きのIPアドレス]

Name:  www.obenri.com
Address: 211.183.111.3x


C:\>

という具合に自宅のIPアドレスに正引きの 名前解決 が行われればOKです。

スレーブDNSサーバーは設置をお願いしてもすぐには情報が反映されないことがありますので、 ”*** ["211.183.111.3x"の逆引きのFQDN] www.obenri.com Non-existent domain” という結果が返ってきても、慌てずにしばらく待ってからもう一度テストしてみましょう。

数時間待っても正しい結果が返ってこない場合は、スレーブDNSサーバーへのゾーン転送が行われていませんので、設定内容等を確認してください。

また、現在設定中とは別の ダイナミックDNS を利用していて、なおかつ委託先のスレーブDNSサーバーが DNSキャッシュ サーバー を兼ねている場合では、

C:\> nslookup www.obenri.com dns0.example.comEnter
Server:  ["dns0.example.com"またはその正引きのIPアドレスまたはその逆引きのFQDN]
Address: ["dns0.example.com"の正引きのIPアドレス]

Non-authoritative answer:
Name:  www.obenri.com
Address: 211.183.111.3x

C:\>

のように、

「Non-authoritative answer(権威のない回答)=DNSキャッシュの回答」

で名前解決が行われます。 DNS の仕組みを考えればお解りのとおり、これもゾーン転送が行われていないことを意味しますので注意してください。

関連セクションへ 関連セクション・ 自宅内DNSサーバーの構築


このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
www.centos.org - The Community ENTerprise Operating System