2004/4/ 6

FreeBSD 4.9RでDNSサーバ(FreeBSD)

はじめに

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";
};
*/
投稿者 yotan : 2004年4月 6日 22:51| トラックバック(0)
アンケート
このエントリは・・・
とても役に立った
役に立った
どちらとも言えない
あまり役に立たなかった
全く役に立たなかった
コメント
コメントする

※コメント内にURLを書くとSPAM扱いとなります。2ch風に表記はOKです










名前、アドレスを登録しますか?