このページでは固定IPアドレス一個名前解決を行うDNSサーバーの構築を行う際の正引きゾーンファイルの作成について初心者向けに解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
固定IPでDNSサーバー構築

固定IPでDNSサーバー構築

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

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

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

WAN空間からのDNSチェック

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

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

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


ゾーンファイルのテンプレート作成

ここでは、 ドメイン名 "obenri.com" による FQDN を、 WAN 空間で 「権威あるDNS情報」 として発信するための正引きのゾーンファイルを作成します。

これから作成するゾーンファイルを named で使用するには、対応するゾーン名でブートファイル "/etc/named.conf" に記述を追加しておく必要があります。

その詳細については ブートファイルの基本設定について を参考にしてください。記述例は ブートファイルの記述例 にあります。

まず、 cp コマンド を使って、既に LAN 側で使用中の "obenri.com.zone" "obenri.com.wan.zone" としてコピーします。

WBEL3 及び CentOS3 の場合は、 "/var/named/obenri.com.zone" obenri.com.zoneの説明 を複製して "/var/named/obenri.com.wan.zone" 作成し、これをnanoエディタ nanoエディタでファイルを開く で開きます。

[root@web1 root]# cd /var/named/Enter カレントディレクトリを移動します。
[root@web1 named]# cp -p obenri.com.zone obenri.com.wan.zoneEnter cpコマンドの説明
[root@web1 named]# nano obenri.com.wan.zoneEnter

WBEL4及びCentOS4、CentOS5の場合は、 "/var/named/chroot/var/named/obenri.com.zone" を複製して "/var/named/chroot/var/named/obenri.com.wan.zone" として作成します。

そして編集しやすくするためにこのファイルの シンボリックリンク ln コマンドで "/var/named/obenri.com.wan.zone" として作成し、これをnanoエディタ nanoエディタでファイルを開く で開きます。

[root@web1 ~]# cd /var/named/chroot/var/named/Enter カレントディレクトリを移動します。
[root@web1 named]# cp -p obenri.com.zone obenri.com.wan.zoneEnter
[root@web1 named]# cd /var/named/Enter カレントディレクトリを移動します。
[root@web1 named]# ln -s /var/named/chroot/var/named/obenri.co
m.wan.zone
Enter
 ↑カレントディレクトリにシンボリックリンクを作成します。

[root@web1 named]# nano obenri.com.wan.zoneEnter

ファイル名が似ていますので、間違えてLAN側用の "/var/named/obenri.com.zone" を開かないようにしてください。

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


このページの先頭へ↑

最初はテストモードで記述する

まず最初に、元々の( LAN 側用の) "obenri.com.zone" の内容と、 WAN 側用として 現段階で 推奨される "obenri.com.wan.zone" をご覧ください。

書式自体にはほとんど違いがありませんので、書き換えは難しくはないはずです。

$TTL 86400
@    IN   SOA   web1   tanaka (
        2005111401   ; Serial
        3H       ; Refresh
        15M       ; Retry
        1W       ; Expire
        1D )      ; Minimum

            IN   NS   web1
            IN   MX   10   mail
            IN   A    192.168.100.11
router         IN   A    192.168.100.1
web1          IN   A    192.168.100.11
mail          IN   A    192.168.100.11
www           IN   A    192.168.100.11

LAN用正引きゾーンファイル"obenri.com.zone"


$TTL 120
@    IN   SOA   web1   dnsadmin (
        2007022601   ; Serial
        120       ; Refresh
        15M       ; Retry
        1W       ; Expire
        120 )      ; Minimum

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

WAN用正引きゾーンファイル(暫定)"obenri.com.wan.zone"

ここでは、" 211.183.111.3x "は、契約している固定の IPアドレス とします。

LAN側用のゾーンファイルとWAN側用のゾーンファイルの最も大きな違いは、Aレコード Aレコードについて の指し示すIPアドレスが、 プライベートIPアドレス から グローバルIPアドレス に変わっているところですが、これは容易にお解りのことと思います。

更に、WAN側からのアクセスにおいては、自宅の サブネット 内は見ることができず、見えるのは ゲートウェイアドレス としてWAN側のIPアドレスのみです。

従って、LAN側からはそれなりに意味のある ルーター に対するAレコードもWAN側では不要になります。

更に現在の設定では、 ドメイン名 "obenri.com" も一つの FQDN として登録されていますが、これを、

ホスト名 が省略されている行が削除されています。よくご覧ください。
$TTL 120
@    IN   SOA   web1   dnsadmin (
        2007022601   ; Serial
        120       ; Refresh
        15M       ; Retry
        1W       ; Expire
        120 )      ; Minimum

            IN   NS   web1
            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

ドメイン名をFQDNとしない"obenri.com.wan.zone"

とすれば "obenri.com" 自身をFQDNからはずすことができます。どちらかといえばこちらのほうが一般的かもしれません。

さて、ここで述べた以外にも見た目には「そこはかとなく」設定が異なる点があります(相違点は 赤字 で示しています。)

これらはいずれもLAN側のゾーンファイルでは「おざなり」で構わなかった部分ですが、WAN側の設定においてはとても重要な意味を持ちます。

以下、これらのポイントについて詳しく説明します。

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


このページの先頭へ↑

"$TTL"の設定値について

"$TTL" の意味については、こちら TTLについて で簡単に説明していますが、要するに DNSキャッシュ の保持時間のことです。

例えばWAN空間からある クライアント がパソコンから "http://www.obenri.com/" にアクセスしたとします。

すると、そのクライアントが契約している ISP DNSサーバー や自宅の ルーター 更に扱っている OS 上に、 "obenri.com.wan.zone" の記述内容がゾーン情報として記録されます。

このDNSキャッシュの仕組みの詳しい内容については DNSキャッシュの仕組み ご覧ください。

そしてクライアントが再び "http://www.obenri.com/" にアクセスしたり、DNSサーバーやルーターを共用している別のクライアントがアクセスしたりするときには、そのゾーン情報がDNSキャッシュとして利用されるようになります。

"$TTL" で設定される時間は、具体的にはDNSキャッシュとして 「権威ある回答として」 受け取ったゾーン情報が、DNSキャッシュから消滅するまでの時間を指します。

つまりこのTTLが大きければそれだけ 構築中のLinuxサーバー の負荷が減り、アクセスする側からみれば閲覧などのレスポンスが良くなります。

しかしだからといってTTLの値を一週間に設定してしまうと、「権威あるDNSサーバー上で」ゾーンファイルの内容を書き換えても実際にその変更がインターネット上に行き渡るまでに最長で一週間かかってしまうことになります。

ということは、例えば、

"www.obenri.com"→"211.183.111.3x"

と設定するつもりだったのを、間違えて、

"www.obenri.com"→"210.183.111.3x"

と設定したまま「権威あるDNS情報」として流してしまったとします。

ひょっとすると、ページが見えないのではなく、他人の運営する全く異なるページが表示されてしまうかもしれません。

この場合、クライアントがパソコンから

"http://www.obenri.com/"

とアクセスしても、目的とする コンテンツ は見ることができません。

そこで間違いに気が付いてすぐにレコードを修正し、 named を再起動しても、そのクライアントが契約している ISP のDNSサーバー上にはそれから一週間の間は、

"www.obenri.com"→"210.183.111.3x"

という間違った情報がDNSキャッシュとして生き続けるので、そのDNSサーバーを参照しているほかのクライアントからも一週間はコンテンツを閲覧できないという事態になってしまうわけです。

TTLの デフォルト は通常 1日 ですが、それでもレコードの完全な切り替わりには最長で丸一日はかかってしまうことになります。

そこで、一般にDNSのレコードの書き換えには次のような手順を踏みます。

1.レコードの内容には変更を加えずに、TTLの値を30分程度に設定変更してnamedを再起動する。

2.namedの再起動から1日以上経過した後、レコードの内容だけを書き換えてnamedを再起動する。

3.二回目のnamedの再起動から30分以上経過した後、名前解決の最終チェックを行う。

4.設定に問題がないことを確認したらTTLの値を元の1日に戻し、namedの再起動を行う。

つまり、通常は負荷の軽減を優先して長めに設定しているTTLを、作業に先立って予め短縮しておき、短時間でWAN空間のDNSキャッシュ情報が書き換わるように段取りをしておいて万が一の設定ミスに備えるわけです。

さて、ここでもう一度 "/var/named/obenri.com.wan.zone" のTTLの値を見てください。

$TTL 120

120秒、すなわちわずか2分です。

これからDNSサーバーに関する様々な設定作業を行うにあたって、当然いくつかの設定変更や修正が予想されるわけですから、作業後にできるだけ早く情報が行き渡るようにするため、このような小さな値を設定しておくわけです。

もちろん、満足な設定を行うことができた後にはTTLの値を大きくし、DNSサーバーの負荷の軽減と名前解決のレスポンスを高めるほうに重点を置くようにします。

つまり今はまだ「設定変更中に望ましいTTL値」というわけです。

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


このページの先頭へ↑

連絡先メールアドレスの記述について

SOAレコード 内の連絡先メールアドレスの記述内容については、 SOAレコードの記述について に説明したとおりです。

「権威あるDNS情報」として登録されている ドメイン名 のゾーン情報は、例えばLinuxの host コマンド で、

[root@web1 ~]# host -a [任意のドメイン名]Enter

で簡単に調べることができ、連絡先のメールアドレスも表示されるようになっています。

お便利サーバー.com管理人は、10個くらいのドメイン名についてゾーンを管理していますが、一日2〜3通程度はこのルートからスパムメールをもらいます。
一方、「ゾーン情報がおかしいよ」といった正当なメールを受け取ったことは一度もありません。

本来このメールアドレスは、ゾーン情報の誤りなどに気が付いた第三者がそれを指摘できるように、という意味で公開されているわけですが、実際のところは心無いスパマー達の 「スパムメールの送信先」 として利用されることのほうが多いようです。

というわけですから、ここに記述すべきメールアドレスは「普段から使っているメールアドレス」ではなく、「スパムが入ってきても構わない」専用のメールアドレスをひとつ作り、

@    IN   SOA   web1   dnsadmin (

のようにそれを記述しておくことをお勧めします。

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


このページの先頭へ↑

プロでもうっかり忘れる"Serial値"について

SOAレコードのSerial値は、 スレーブ DNSサーバー を設置するときにとても重要になるパラメータです。

まずは Serial値について の説明をよく読んで、ゾーン転送と Serial値 の変更の意味についてしっかり理解してください。

もちろんLAN内にスレーブDNSサーバーを設置しても構いませんが、あまり意味はないでしょう。

LAN で利用するDNSサーバーではスレーブDNSサーバーを設置しませんから、このSerial値は何の意味も持ちません。しかし、 WAN 空間でDNSサーバーを運用し、スレーブDNSサーバーを設置するとなると話は別です。

簡単に言ってしまうと、

「レコードの内容を変更しても、Serial値の増加を忘れてしまったら、その変更はスレーブDNSサーバーには一切反映されない。」

ということになりますから、そういうミスをやってしまうと、

「本来ならマスターDNSサーバーのバックアップとして同じDNS情報を流さなければならないスレーブDNSサーバーが異なるDNS情報を流し続けてしまう。」

ということになってしまうわけです。

そこで、これからWAN側用の「権威あるDNSサーバー」を運用するにあたっては、今から 「レコードの内容を変更したら、必ずSerial値を書き換える」 という習慣をつけることをおすすめします。

Serial値の付け方については特に決まりはありませんが、 Serial値について の説明のとおり、一般的に用いられている、

"西暦年""月""日""2桁の数字"→2007022601

という記述習慣に従って、

        2007022601   ; Serial

としておくのがベターです。

「Serial値の増加」という作業はDNSサーバー自体の動作に直接影響を与えるものではありませんから、慣れた人でも結構忘れてしまうものです。

そして外部からアクセスする第三者の指摘でようやくミスに気付く、というシナリオになりますから、そんな赤っ恥をかかないためにも一つの習慣として身につけてしまいましょう。

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


このページの先頭へ↑

設定の意外な盲点"Refresh時間"

TTL値とよく混同されるこの"Refresh時間"ですが、 Refresh時間について の説明のとおり、これはスレーブ DNSサーバー がマスターDNSサーバー(つまり 構築中のLinuxサーバー )に ゾーン情報がアップデートされていないかどうかをチェックする時間間隔 のことです。

そして先に説明した"Serial値"が大きくなっている場合にのみスレーブDNSサーバーはゾーンファイルの入れ替えを行います。

この値は大きければ大きいほど双方のDNSサーバーの動作負担は減りますが、その分スレーブDNSサーバーの情報変更のタイミングが遅れる可能性が高くなります。

従って、まだゾーン情報がきちんと固まっていないときはこの値を小さくしておき、迅速にゾーン転送が行われるようにしておきます。

DNSサーバーの通常稼動時に推奨される"Refresh時間"は 3時間 ですが、ここでは、

        120       ; Refresh

と120秒に設定します。

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


このページの先頭へ↑

念のため"Minimum時間"も小さく

いわゆる ネガティブキャッシュ の有効時間です Refresh時間について

ネガティブキャッシュの時間は、レコードの追加や変更だけであれば大きな影響はありませんが、一度無効にした FQDN をもう一度有効にするような設定の変更が生じたときに不具合を及ぼすことがあります。

従って、まだゾーン情報がきちんと固まっていないときはこの値を小さくしておき、ネガティブキャッシュが早く無効になるように設定しておきます。

DNSサーバーの通常稼動時に推奨される"Minimum時間"は 一日 ですが、ここでは、

        120 )      ; Minimum

と120秒に設定します。

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


このページの先頭へ↑

書式チェックとnamedの再起動

"obenri.com.wan.zone" を保存 nanoエディタでファイルを閉じる したら、 BINDの書式チェックについて を参考に、 "/etc/named.conf" "/var/named/obenri.com.wan.zone" の書式チェックを行ってください。

そして書式チェックが終わったら、 named の再起動あるいは設定の再読み込みを行って設定を有効にしてください namedの設定の有効化について

DNSサーバーの構築に、
とても役に立った一冊です

そして、 LAN 側での DNSサーバー の動作確認 namedの動作確認について を一通りおこなってみて、 WAN 側のDNS設定を追加する前と変わりなく 名前解決 ができることを確認してください。

今回はLAN側とWAN側で応答する内容を変える設定にしています、このセクションで追加した設定はLAN側からはまったく参照されないはずです。

もしもLAN側から グローバルIPアドレス への名前解決結果が返されるような場合は "/etc/named.conf" の記述に誤りがあるはずですから、もう一度 /etc/named.confの設定 の内容を見直してください。

関連セクションへ 関連セクション・ 自宅内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