第1部 構築編
本番運用に向けて
ネームサーバ構築 (LAN)
さて、前回でネームサーバを構築するソフトウェアとして、BIND9 をインストールした。
BIND9 は従来までの BIND8 に比して、view セクションによって LAN と WAN に同時対応出来る特徴があることも述べた。
というわけで、まずは LAN 用のネームサーバを組んで、LAN の中でドメイン名を使ったマシン管理を出来るようにしたいと思う。
実は紆余曲折が多すぎて書ききれない。
ここでは大分端折ってダイジェストにお送りすることをお断りしておく。
解説書などを読みながらの手探りは文章にするには余りにも膨大な作業量を発生させたのだ………
最初に前提条件を書いておこう。
現在我が家にはメインデスクトップとサーバ機、サブデスクトップが実働可能状態にある。
このウチ試しにメインデスクトップとサーバ機をネームサーバで行き来出来るようにする。
更に仕事先に置きっぱなしにしているがコミケではディスプレイ用として活躍する DELL のノート、かつての愛機 PC-9821Ap3、更にもらい物の PC-9821 ノートもあるが、ここでは論じない。
そもそもネットワークに参加していないのだ。
ここでメインデスクトップには IP アドレス 192.168.1.10 を、サーバ機には 192.168.1.1 を与える。
ドメイン名はメインデスクトップが aine.elysium、サーバ機が mirie.elysium で、共にローカル用のトップレベルドメイン elysium に属するドメインとして管理する。
従って、elysium ドメイン名を管理するネームサーバには ns.elysium と命名する。
これはサーバ機である mirie.elysium と同じマシンだ。
BIND9 の設定ファイルは /etc/named.conf とし、ゾーンファイルは /etc/named/ に保存する。
まずループバックアドレスを設定したい。
ループバックアドレスは、要するに自分自身を指し示す特殊なアドレスで、通常ドメイン名は localhost、IP アドレスは 127.0.0.1 である。
ネームサーバを実行するにはこれは大前提だ。
正引きと逆引きがちゃんと機能するように、named.conf と正引き用ゾーンファイル localhost.zone、逆引き用ゾーンファイル 0.0.127.in-addr.arpa.zone を作成する。
作成内容は以下になった。
- /etc/named.conf
key "rndc-key" {
algorithm hmac-md5;
secret "(秘密鍵)";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
acl localnet {
192.168.1.0/24;
127.0.0.1;
};
options {
directory "/etc/named";
auth-nxdomain yes;
allow-transfer { localnet; };
allow-query { localnet; };
};
view "local" {
match-clients { localnet; };
recursion yes;
zone "localhost" IN {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "0.0.127.in-addr.arpa.zone";
};
};
- /etc/named/localhost.zone
$TTL 1D
$ORIGIN localhost.
@ IN SOA localhost. root.localhost. (
20030131 ; serial
1D ; refresh
1H ; retry
1W ; expire
1D ) ; minimum
IN NS @
IN A 127.0.0.1
- /etc/named/0.0.127.in-addr.arpa.zone
$TTL 1D
$ORIGIN 0.0.127.in-addr.arpa.
@ IN SOA localhost. root.localhost. (
20030131 ; serial
1D ; refresh
1H ; retry
1W ; expire
1D ) ; minimum
IN NS localhost.
1 IN PTR localhost.
ここで BIND9 の特徴である view セクションを用いてみた。
acl セクションで定義した localnet と命名したフィルタで認識されるネットワークに対して、local と命名した view セクションで受け答えするようになった。
この状態で BIND9 を起動して、ネームサーバを稼働させる。
更に /etc/resolv.conf には以下のように設定して、ネームサーバを自分自身に設定した。
domain elysium
nameserver 127.0.0.1
んで、
# host localhost
とすると、正常に 127.0.0.1 が取得出来た。
逆引きも同様に実験すると、
# host 127.0.0.1
これも正常に localhost が取得出来た。
さて、ここで問題がひとつ持ち上がった。
SSH にしろ、FTP にしろ、メインデスクトップからサーバ機に接続するのが滅茶苦茶重くなってしまったのだ。
なんか、あからさまに何かのタイムアウトを待っているかのような時間を待たされてから、徐に接続に行っている。
どう考えても変なのだが、BIND9 を停止させておくと速やかに接続出来ることも確認した。
どうやらネームサーバに何かを問い合わせに行っているらしい、しかしそうなると、わざわざ問い合わせなければならない相手と言ったらクライアントの IP の逆引きくらいだろう。
というわけで、取り急ぎ 192.168.1.* 系列のゾーンファイルも急いで追加する。
ちなみに、aine.elysium にしろ mirie.elysium にしろ IP アドレスとドメイン名の対応が取れてさえいればいいので elysium ドメイン名のサブドメイン名として管理しても良かったのだが、敢えてゾーンを分割して考えてみた。
したがって、通常よりゾーンファイルが多くなってしまっているが気にしないように。
こうして追加したのが以下だ。
- /etc/named.conf
key "rndc-key" {
algorithm hmac-md5;
secret "(秘密鍵)";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
acl localnet {
192.168.1.0/24;
127.0.0.1;
};
options {
directory "/etc/named";
auth-nxdomain yes;
allow-transfer { localnet; };
allow-query { localnet; };
};
view "local" {
match-clients { localnet; };
recursion yes;
zone "localhost" IN {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "0.0.127.in-addr.arpa.zone";
};
zone "elysium" IN {
type master;
file "elysium.zone";
};
zone "mirie.elysium" IN {
type master;
file "mirie.elysium.zone";
};
zone "aine.elysium" IN {
type master;
file "aine.elysium.zone";
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "1.168.192.in-addr.arpa.zone";
};
};
- /etc/named/elysium.zone
$TTL 1D
$ORIGIN elysium.
@ IN SOA ns.elysium. root.localhost. (
20030202 ; serial
1D ; refresh
1H ; retry
1W ; expire
1D ) ; minimum
IN NS ns.elysium.
ns IN A 192.168.1.1
mirie IN NS ns
aine IN NS ns
- /etc/named/mirie.elysium.zone
$TTL 1D
$ORIGIN mirie.elysium.
@ IN SOA ns.elysium. root.localhost. (
20030207 ; serial
1D ; refresh
1H ; retry
1W ; expire
1D ) ; minimum
IN NS ns.elysium.
IN A 192.168.1.1
ftp IN CNAME @
- /etc/named/aine.elysium.zone
$TTL 1D
$ORIGIN aine.elysium.
@ IN SOA ns.elysium. root.localhost. (
20030202 ; serial
1D ; refresh
1H ; retry
1W ; expire
1D ) ; minimum
IN NS ns.elysium.
IN A 192.168.1.10
- /etc/named/1.168.192.in-addr.arpa.zone
$TTL 1D
$ORIGIN 1.168.192.in-addr.arpa.
@ IN SOA ns.elysium. root.localhost. (
20030202 ; serial
1D ; refresh
1H ; retry
1W ; expire
1D ) ; minimum
IN NS ns.elysium.
1 IN PTR mirie.elysium.
10 IN PTR aine.elysium.
これで BIND9 を再起動して、メインマシンから SSH 接続し直してみると、今度は従来通り高速に接続出来た。
やはり接続元の IP から逆引きを行っていたらしい。
SSH も FTP も同様に遅くなったから、もしかしたらスーパサーバの xinetd の仕様かも知れない。
気が向いたら xinetd の設定を弄る方法でも探してみよう。
でないと、anonymous FTP で外部から接続するのに逆引き不可能な IP からの接続だった時には時間が掛かってしまうと思うし………
豪快なまでの駆け足で書いてしまったが、将来自宅サーバが公開出来て How to ページなど作るようなことにでもなったら詳しく説明したいと思う。