|
|
次のページ
前のページ
目次へ
5. 単純なドメインあなた自身のドメインの設定方法
5.1 でもまず最初に退屈な理論まず最初に: ここまでの内容はちゃんと読みましたか? 読んでなければ読むように。
このセクションを実際に始める前に、DNS の動作に関する
理論を少々と、実際の動作例を紹介しておきます。きっと役に立ちますから、
ぜひ読みましょう。
読みたくなくても、少なくとも流し読みくらいはしておいてください。
DNS は階層的なツリー構造のシステムです。その頂点は ` マシンの検索を行うとき、
問い合わせはルートから始まる階層に対して再帰的に行われます。
いまホスト
これは参照先の提示です。 ここには "Authority section" しかなく、"Answer section" がありません。 私たちの立てたネームサーバは、 私たちをこのネームサーバのどれかに指し向けます。 どれかひとつをランダムに選んでみましょう。
MIT.EDU のサーバ群がいっぺんに提示されました。 ではまたどれかをランダムに選びましょう。
今度は "ANSWER SECTION" がありました。
そして私たちの知りたかった答も見つかりました。
"AUTHORITY SECTION" には、次回
というわけで、 ツリーとのアナロジーでいうと、名前の各 ``
いままでほとんど触れませんでしたが、
同じくらい非常に重要なドメインとして
5.2 自分のドメインを作るさて、私たちのドメインを定義しましょう。ドメイン
始める前にもう一点。ホスト名に使える文字には制限があります。
英語のアルファベット a-z、数字 0-9、および '-' (ダッシュ) 文字
だけが使えます。守るようにしてください
(この規則を破っても BIND 9 では大丈夫ですが、BIND 8 はダメです)。
大文字小文字は DNS では区別されません。
したがって
実はこの章で最初に行うべき部分はすでに記述済みです。
zone "0.0.127.in-addr.arpa" {
type master;
file "pz/127.0.0";
};
このファイルではドメイン名の最後に
`
$TTL 3D
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
1 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
1D) ; Minimum TTL
NS ns.linux.bogus.
1 PTR localhost.
先程の この「ゾーンファイル」には三つの 「リソースレコード (resource record: RR)」が含まれています。 SOA RR, NS RR, PTR RR です。 SOA は Start Of Authority の省略です。`@' は特別な記号で、 origin を意味します。 このファイルの `domain' カラムは 0.0.127.in-addr.arpa ですから、 最初の行の実際の意味は以下と同じになります。
NS は Name Server RR の略です。 この行の先頭には `@' がありません。 これは暗黙のうちにすでに指定されたことになっています。 直前の行が `@' ではじまっていたからです。多少タイプの量が節約できますね。 したがって NS の行は以下のようにも記述できることになります。
この行は DNS に、どのマシンがこのドメイン
最後に PTR (Domain Name Pointer) レコードが、
サブネット
SOA レコードはどんなゾーンファイルでも先頭に置かれます。
また各ゾーンファイルにつき一つ、先頭に
(ただし
では、ここで named を再起動 (
なんとか 127.0.0.1 から
zone "linux.bogus" {
type master;
notify no;
file "pz/linux.bogus";
};
ここでも
;
; Zone file for linux.bogus
;
; The full zone file
;
$TTL 3D
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
199802151 ; serial, todays date + todays serial #
8H ; refresh, seconds
2H ; retry, seconds
4W ; expire, seconds
1D ) ; minimum, seconds
;
NS ns ; Inet Address of name server
MX 10 mail.linux.bogus ; Primary Mail Exchanger
MX 20 mail.friend.bogus. ; Secondary Mail Exchanger
;
localhost A 127.0.0.1
ns A 192.168.196.2
mail A 192.168.196.4
SOA レコードについては二つの点に注意する必要があります。
このファイルには新しいタイプの RR があります。 MX (Mail eXchanger)
RR です。これはメールシステムに対して
よく見ると、バグがあることがわかると思います。
というのは全くおかしいですね。これは、
でなければなりません。
読者の学習効果を慮って :-)、ここで私はわざと間違えました。 ゾーンファイルを見ると、以下の行があるはずです。
ここにはピリオドがないですね。
あるいは余計に 'linux.bogus' を書いてしまっている、とも言えます。
ゾーンファイルに書かれたホスト名の最後にピリオドがない場合には、
origin が最後に加えられます。つまり
MX 10 mail.linux.bogus. ; Primary Mail Exchanger
または
MX 10 mail ; Primary Mail Exchanger
とするべきです。私は後者が好きです。タイプ量が少ないですから。
BIND の専門家にはこの書式に反対する人もいます (賛成する人もいます)。
ゾーンファイルでは、ドメインはすべて書き下して ` ひとつ強く注意しておきたいのですが、named.conf ファイルでは、
ドメイン名の後に `
では、この点を押さえて新たなゾーンファイルを書きましょう。 少々新しい情報も加わっていますが、以下のようになります。
;
; Zone file for linux.bogus
;
; The full zone file
;
$TTL 3D
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
199802151 ; serial, todays date + todays serial #
8H ; refresh, seconds
2H ; retry, seconds
4W ; expire, seconds
1D ) ; minimum, seconds
;
TXT "Linux.Bogus, your DNS consultants"
NS ns ; Inet Address of name server
NS ns.friend.bogus.
MX 10 mail ; Primary Mail Exchanger
MX 20 mail.friend.bogus. ; Secondary Mail Exchanger
localhost A 127.0.0.1
gw A 192.168.196.1
TXT "The router"
ns A 192.168.196.2
MX 10 mail
MX 20 mail.friend.bogus.
www CNAME ns
donald A 192.168.196.3
MX 10 mail
MX 20 mail.friend.bogus.
TXT "DEK"
mail A 192.168.196.4
MX 10 mail
MX 20 mail.friend.bogus.
ftp A 192.168.196.5
MX 10 mail
MX 20 mail.friend.bogus.
CNAME (Canonical NAME) は、各マシンを複数の名前で呼ぶ方法です。 よって www は ns の別名になります。CNAME レコードの利用については、 多少議論の余地があります。 でも以下のルールを守っておけば大丈夫でしょう。 MX, CNAME, SOA の 各レコードでは CNAME レコードを参照してはいけません。 これらは A レコードだけを参照すべきなのです。したがって
foobar CNAME www ; NO! という指定はすべきではなく、
foobar CNAME ns ; Yes! という指定が正しいものとなります。
うまくいっていますね。
ご覧の通り、ゾーンファイルそのものとちょっと似ています。
つまり
さて、ここまでが半分。
5.3 逆引きゾーン今やプログラムは、 linux.bogus にある名前を、 実際に接続すべきアドレスに変換できるようになったわけです。 でも逆引きのゾーンも必要です。 これは DNS でアドレスを名前に変換できるようにするためのものです。 この名前はさまざまな種類のたくさんのサーバ (FTP, IRC, WWW などなど) において、あなたとの通信を認めるか、 また認めた場合、どの程度の優先性を付与するかなどの判断に用いられます。 インターネットにあるサービスすべてにアクセスするためには、 逆引きのゾーンが必要になります。 以下を
zone "196.168.192.in-addr.arpa" {
type master;
notify no;
file "pz/192.168.196";
};
これは
$TTL 3D
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
199802151 ; Serial, todays date + todays serial
8H ; Refresh
2H ; Retry
4W ; Expire
1D) ; Minimum TTL
NS ns.linux.bogus.
1 PTR gw.linux.bogus.
2 PTR ns.linux.bogus.
3 PTR donald.linux.bogus.
4 PTR mail.linux.bogus.
5 PTR ftp.linux.bogus.
では
$ dig -x 192.168.196.4 ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58451 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;4.196.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 4.196.168.192.in-addr.arpa. 259200 IN PTR mail.linux.bogus. ;; AUTHORITY SECTION: 196.168.192.in-addr.arpa. 259200 IN NS ns.linux.bogus. ;; ADDITIONAL SECTION: ns.linux.bogus. 259200 IN A 192.168.196.2 ;; Query time: 4 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sun Dec 23 03:16:05 2001 ;; MSG SIZE rcvd: 107
うん、良さそうですね。全体もダンプして調べてみましょう。
$ dig 196.168.192.in-addr.arpa. AXFR
; <<>> DiG 9.1.3 <<>> 196.168.192.in-addr.arpa. AXFR
;; global options: printcmd
196.168.192.in-addr.arpa. 259200 IN SOA ns.linux.bogus. \
hostmaster.linux.bogus. 199802151 28800 7200 2419200 86400
196.168.192.in-addr.arpa. 259200 IN NS ns.linux.bogus.
1.196.168.192.in-addr.arpa. 259200 IN PTR gw.linux.bogus.
2.196.168.192.in-addr.arpa. 259200 IN PTR ns.linux.bogus.
3.196.168.192.in-addr.arpa. 259200 IN PTR donald.linux.bogus.
4.196.168.192.in-addr.arpa. 259200 IN PTR mail.linux.bogus.
5.196.168.192.in-addr.arpa. 259200 IN PTR ftp.linux.bogus.
196.168.192.in-addr.arpa. 259200 IN SOA ns.linux.bogus. \
hostmaster.linux.bogus. 199802151 28800 7200 2419200 86400
;; Query time: 6 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Dec 23 03:16:58 2001
;; XFR size: 9 records
よさそうですね!このような出力にならなかった場合は、 syslog にエラーメッセージが出ていないか見てみましょう。 やり方は named を起動する 直下の最初のセクションで説明しましたね。
5.4 気をつけてほしいことここでいくつか付け加えておくことがあります。上記で用いた
IP 番号は 'private net' のうちの一つのブロックから取ってきたものです。
つまりこれらの IP 番号はインターネットでパブリックに用いることはできません。
ですからこの HOWTO で例として表示しても安全なわけです。
次の点は
そしてもちろん、このドメインは架空のいいかげんなもので、 使われているアドレスも同じく架空のものです。 現実の世界で用いられている本物の例は、次の章を見て下さい。
5.5 なぜ逆引きが動作しないのか名前引きのシステムには、ちょっとした「できの悪い部分」がいくつか あります。通常これらが表に出てくることはありませんが、 逆引きゾーンの設定では良くお目にかかることがあります。 ここから以降を読み進める前には、あなたのマシンが 「あなたのネームサーバ」から逆引きできることを確認してください。 できない場合は戻ってやり直してからにしてください。
ここでは、逆引きを外部ネットワークから見た場合に生じやすい 二つの問題点について議論します。
逆引きゾーンが代理されないサービスプロバイダからネットワークアドレス空間とドメインネームを もらうときには、通常そのドメインネームは代理 (delegation) されます。 代理とは橋渡しの役目をする NS レコードのことで、 あるネームサーバから別のネームサーバを取得するときに用います。 先に 退屈な理論 の節で説明しました。読んでます、よね? 逆引きゾーンが動作していない場合は、今すぐ戻って読んでください。
逆引きゾーンにも代理が必要です。
例えば
クラスレス (classless) のサブネットをもらった場合これはやや高度な話題になります。 しかしクラスレスのサブネットは最近非常に良く使われるようになってきたので、 小さな会社に所属している人なら、おそらく身近にあるでしょう。
最近のインターネットをなんとか維持できているのは、 実はクラスレスサブネットのおかげなのです。 数年前に IP 番号の枯渇についてちょっとした騒ぎになったことがありました。 その時 IETF (Internet Engineering Task Force: インターネットがちゃんと動いているのは彼らのおかげなのです) の賢人たちは、彼らの叡智を集めてこの問題を解決したのでした。 ただし相応の対価をもって。 その対価の一部は、``C'' 未満のサブネットを使わなければならないこと、 それによって動作しなくなるものが出てくること、です。 このあたりに関する説明と、その扱い方に関しては、 Ask Mr. DNS にある優れた解説を見てください。
読みました?ここでは説明しませんから、ちゃんと読んでくださいね。
この問題の半分は、接続先の ISP が Mr. DNS に書いてあったテクニックを理解していなければならない、 というところにあります。 小さな ISP では、これを知らずに動かしているところもあるでしょう。 その場合は、あなたが彼らにがまん強く教えてあげなければいけません。 それに、まずあなたが理解しないといけませんね ;-) 理解してくれたら、きっとちゃんとした逆引きゾーンを設定してくれるでしょう。 dig を使って正しいかどうか確かめましょう。 問題の残り半分は、あなたがこのテクニックを理解しなければならない、 というところです。自信がなければ、もう一度読みにいきましょう。 そして Mr. DNS の説明にしたがって、 自分のクラスレス逆引きゾーンを設定しましょう。
実はここにはもう一つトラップが待ち構えています。
(非常に) 古いレゾルバは、名前解決のチェーンの中に置かれた
この
ISP によっては別の解法を提供していることもあります。 たとえば Web ベースの form によって逆引きのマップを 入力できるようになっているとか、 あるいは似たような全自動型登録システムとか。
5.6 スレーブサーバマスターサーバでゾーンが正しく設定できたら、 少なくとも 1 台のスレーブサーバが必要になります。 スレーブサーバはシステムを堅牢にするために必要なものです。 マスターが落ちても、ネットにいる外部の人が、 スレーブからあなたのドメインに関する情報を取得できるようになるのです。 スレーブは、あなたのいるところからできるだけ離れたところに置きます。 マスターとスレーブは、電力供給源・LAN・ISP・町・国、などを、 できる限り共有していないことが望ましいのです。 これらがすべてマスターと異なっているスレーブが見つかったら、 それは非常に良いスレーブだと言えます。 スレーブは、単にマスターからゾーンファイルをコピーするネームサーバです。 以下のように設定します。
zone "linux.bogus" {
type slave;
file "sz/linux.bogus";
masters { 192.168.196.2; };
};
データのコピーにはゾーン転送という仕組みを用います。 ゾーン転送は SOA レコードで制御します。
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
199802151 ; serial, todays date + todays serial #
8H ; refresh, seconds
2H ; retry, seconds
4W ; expire, seconds
1D ) ; minimum, seconds
マスターのシリアル番号がスレーブよりも大きいときに限って ゾーンが転送されます。リフレッシュ (refresh) 時間に一回ずつ、 スレーブはマスターが更新されていないかどうかチェックします。 チェックできない (マスターに接続できない) と、 スレーブはリトライ (retry) 時間に一回ずつ再接続を試みます。 期限切れ (expire) 時間が経過しても失敗し続けた場合は、 スレーブはそのゾーンをファイルシステムから削除し、 それ以上はゾーン情報の提供を行わなくなります。
次のページ 前のページ 目次へ |
[ |