はじめに
So-netのDNSサーバは夜になるとよく、問い合わせがタイムアウトしてしまい、ネットは混んでいないのに目的のページが表示できない事があります。
詳しい人数は不明ですが、大量の会員を抱えてDNSサーバが二つだけというのは非常に厳しいのではと思います。
実験としてFreeBSD 4.7R-p4に標準で付いてくるnamed 8.3.6-REL-p1を使用して自分専用のDNSサーバを構築してみました。
結果として上手くいったのですが、キャッシュされていないアドレスの問い合わせが非常に時間がかかり(500ms〜)、実用的でないのと、やっぱり限られたルートサーバの資源に個人ベースのネットワークから問い合わせを行うのはネットマナー的に問題ありそうなので、止めました。
一応本エントリでお手軽DNSサーバ構築(ローカルな名前も解決)手順を示しますが、実践はしないほうがいいと思います。
localhostの設定を行う
/etc/namedb配下に移動します。
make-localhostというスクリプトがあるのでshから実行すると、ドメイン名を聞いてくるので適当に入力します。するとlocalhost.revとlocalhost-v6.revの二つのファイルが作成されます。
# cd /etc/namedb # sh make-localhost Enter your domain name: example.com # |
named.rootの更新を行う
ルートサーバの設定ファイル(named.root)を最新のものに更新します。
/etc/namedb配下でfetchコマンドを使って最新の一覧をダウンロードしてきます。
# cd /etc/namedb # mv named.root named.root.bak # fetch ftp://ftp.rs.internic.net/domain/named.root |
LAN内ホストの登録を行う
上の設定だけで、namedを起動すれば、もう外向けのアドレス解決はルートサーバ経由で取得できるのですが、それだけでは芸が無いのでLAN内のホストの問い合わせも出来るようにしましょう。
/etc/namedb/named.confに以下の行を追加します。
zone "example.com" {
type master;
file "named.zone";
};
zone "0.168.192.IN-ADDR.ARPA" {
type master;
file "named.rev";
};
|
/etc/namedb/named.zoneにはホスト名に対応したIPアドレスを列挙します。以下に例を示します。
$TTL 600
@ IN SOA penpen.example.com. root.penpen.example.com. (
2004040601 ; Serial
600 ; Refresh
300 ; Retry
604800 ; Expire
600 ) ; Minimum
IN NS penpen.example.com.
IN PTR localhost.example.com.
linksys IN A 192.168.0.1
kerokero IN A 192.168.0.2
gumi IN A 192.168.0.3
penpen IN A 192.168.0.4
pm890c IN A 192.168.0.5
|
/etc/namedb/named.revにはIPアドレスに対応したホスト名を列挙します。以下に例を示します。
$TTL 600
@ IN SOA penpen.example.com. root.penpen.example.com. (
2004040601 ; Serial
600 ; Refresh
300 ; Retry
604800 ; Expire
600 ) ; Minimum
IN NS penpen.example.com.
1 IN PTR linksys.example.com.
2 IN PTR kerokero.example.com.
3 IN PTR gumi.example.com.
4 IN PTR penpen.example.com.
5 IN PTR pm890c.example.com.
|
resolv.confの設定
先ずはFreeBSDサーバ(自分自身)から自分のDNSサーバを利用して名前解決をするように設定します。
/etc/resolv.confを以下の様に設定します。
domain example.com nameserver localhost search example.com |
namedの起動
それではnamedを起動しましょう。特に引数はなくていいです。namedと打ち込みましょう。
# named |
あとはnslookupで色々ローカル内やインターネット上のホスト名を打ち込んでIPアドレスが正しく引けるか確かめます。
問題なければ/etc/rc.confに以下の一行を追加しておきます。そうすれば次回再起動時にもnamedが自動で起動します。
named_enable="YES" |
(おまけ)ローカル用にDNSサーバを立てる
外向けの名前解決にはプロバイダが提供しているDNSサーバを利用して、ローカルな名前解決も行いたい場合には以下の設定を/etc/namedb/named.confに設定します。
option欄にforwarders, forward, allow-queryの三行を追加し、zone "."のブロックをコメントアウトします。
太字の部分はあなたが提供されているプロバイダのDNSサーバアドレスを指定してください。
options {
directory "/etc/namedb";
forwarders { 202.238.95.24; };
forward only;
allow-query { 192.168.0.0/24; };
};
/*
zone "." {
type hint;
file "named.root";
};
*/
|
※コメント内にURLを書くとSPAM扱いとなります。2ch風に表記はOKです


