第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 ページなど作るようなことにでもなったら詳しく説明したいと思う。

Valid HTML 4.01 Strict Valid CSS!