2008/02/23

引き続きALIXでDNSとDHCPdサーバーを構成する

さてDNSサーバーにするには、それで何をさせたいのかという所もポイントになります。 今回はDHCPサーバーにもするつもりなので、Dynamic-DNSサーバーにしていきます。 サーバープログラムの選択肢はいくつかありますが、bind9を使う事にします。 debian + dhcp3-server + bind9 の組合せでDDNSサーバーを構成する方法を解説しているサイトがあるので、これを参考にします。 Configuring Dynamic DNS & DHCP on Debian Stable

bind9かbind9-serverか、どんな名前でapt-getすれば良いのかわからない場合には、キーワードを指定して探す事ができます。

# apt-cache search bind9
...
# apt-get install bind9 bind9-host
必要な設定ファイルは/etc/bind以下に展開されています。 とりあえず /etc/bind/named.conf.options の fowarders にプロバイダのDNSサーバー名を追加しておきます。
# cat /etc/bind/named.conf.options
options {
        directory "/var/cache/bind";

...
        forwarders {
                192.168.1.1;
        };
...
次に /etc/resolv.conf を編集して nameserver で始まる行を外しておきます。 searchの指定がない1行だけなら空のファイルになります。
# cat /etc/resolv.conf
search localdomain
これで自分のbindを使ってIPアドレスを検索するようになります。

ついでなので、192.168.1.0/24の名前解決をするようにします。 とりあえずDynamic DNSの布石として、/etc/bind/rndc-keyを知っているユーザーだけが通知できるようにします。

# tail -3 /etc/bind/named.conf.options
controls {
        inet 127.0.0.1 allow {localhost; } keys { "rndc-key"; };
};
# cat /etc/bind/named.conf.local
...
zone "localdomain" {
        type master;
        file "/etc/bind/db.localdomain";
        allow-update { key "rndc-key"; };
        notify yes;
};

zone "1.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.192.168.1";
        allow-update { key "rndc-key"; };
        notify yes;
};

include "/etc/bind/rndc.key";
zoneの中で"/etc/bind/rndc.key"ファイルの中で指定されているkey名を書いていますが、そのファイルの"inlcude"は順番が後なんですよね。 ちょっと違和感がありますが、参考書はこう書いてあるので、とりあえずこのままにします。
fileで指定したファイルを準備します。
# sed -e 's/localhost\./localhost\.localdomain\./g' db.127 < db.192.168.1
# sed -e 's/localhost\./localhost\.localdomain\./g' db.empty < db.localdomain
作成したファイルの最後の方を少し編集していきます。
# tail -3 db.localdomain
@       IN      NS      ns.localdomain.
localhost       IN      A       127.0.0.1
ns              IN      A       192.168.1.2
# tail -2 db.192.168.1
@       IN      NS      localhost.localdomain.
2       IN      PTR     ns.localdomain.

dhcpdを導入します。選択肢はdhcp,dhcp3-serverぐらいでしょうか。 今回はdhcp==dhcp2らしいので、より新しいdhcp3-serverを使っていきます。

# apt-get install dhcp3-server
必要な設定ファイルは /etc/dhcp3 の中にあります。 適当に設定ファイルを眺めて、詳細は後で確認する事にして、次のような設定ファイルをでっち上げました。
cat /etc/dhcp3/dhcpd.conf
##
ddns-update-style       interim;
ddns-updates                on;
ddns-domainname             "localdomain.";
include                     "/etc/bind/rndc.key";

# option definitions common to all supported networks...
option domain-name "localdomain";
option domain-name-servers 192.168.1.2;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;

shared-network localdomain {
  subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.30 192.168.1.45;
    option domain-name-servers 192.168.1.2;
    option domain-name "localdomain.";
    option routers 192.168.1.1;
    option broadcast-address 192.168.1.255;
    default-lease-time 600;
    max-lease-time 7200;

    zone    1.168.192.in-addr.arpa. {
            primary 127.0.0.1;
            key             "rndc-key";
    }

    zone    localdomain. {
            primary 127.0.0.1;
            key             "rndc-key";
    }
  }
}
ここまで設定して tail -f /var/loga/daemin.log をみているとエラーメッセージが表示されます。その中にbind9が/etc/bind以下に書き込み権限を持っていないというものがあったので、namedの実行ユーザーbindのプライマリーグループのbindに書き込み権限を付与しました。
# chmod g+w /etc/bind
# ls -adl /etc/bind
drwxrwsr-x 2 root bind 1024 Feb 23 14:09 /etc/bind

とりあえず土曜日の暇潰しにはちょうど良かったかな。 まだカスタマイズしたいところもあるけれど、とりあえずここら辺で今は終りにしましょう

2008/12/13追記

"option domain-name-servers”にホスト名を指定している場合、うまくクライアントがDNSサーバーを設定できない場合があります。IPアドレスを指定するようにしましょう。

0 件のコメント: