さて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 件のコメント:
コメントを投稿