« postfix で queue に溜まりっぱなしのメールを調べたり消したり | メイン | PPP over SSH(Vine がサーバ/Win2K がクライアント) »

2006年02月08日

Vine で named(bind) [ カテゴリ : memo - 自宅サーバ設定(Linux、たまにWindows) ]

http://www.zoneedit.com/ のサービスを使っていたら、障害で通らなくなったりしてたので、自前のプライマリ、zoneedit.com のセカンダリという作りに変更してみた。

参考
http://cyberam.dip.jp/linux_server/dns/bind_main.html

1. Vine の rpm で bind をインストール
# apt-get install bind

2./etc/named.conf を作る
- ログは /var/log/named/named.log。ただし /var/log/message にも残る
- zone ファイルのディレクトリは /var/named/

options {
    directory "/var/named";	// ZONE FILE の置き場所		
    forwarders {		// 自前で名前解決できないときに問い合わせる外部DNSサーバ
        XX.XXX.XXX.XX;		// 利用している ISP のを使っている。
	YY.YYY.YYY.YY;	
    };
    allow-transfer {AAA.AAA.AAA.AAA; BBB.BBB.BBB.BBB ;}; // zoneedit.com の slave server へのZONE転送許可
};

logging {	//	ログの設定。よくわからんが、こんなで。
	channel default-log {
		file "/var/log/named/named.log" versions 5 size 1m;
		severity info;
		print-time yes;
		print-category yes;
	};
	category default {
		default-log;
	};
};

zone "localhost" IN {	//	localhost 正引きファイルの指定
    type master; // secondary DNS なら slave (以下同様)
    file "localhost.zone";
};

zone "0.0.127.in-addr.arpa" IN { //	localhost 逆引きファイルの指定
    type master;
    file "0.0.127.in-addr.arpa";
};

zone "pizzica.to" IN {	//	独自ドメイン正引きファイルの指定
	type master;
	file "pizzica.to";
};
192.168.*.* とかをLAN内で扱って、DNSサーバに扱わせる場合は、そのあたりの内部情報は外部から引けないように設定する必要あり。
そゆときは、たぶん1つの host を LAN では local ip address で、外部からは global ip address で引きたい場合になるだろうから、 view と match-client 使って分ける。
うちではやってないけど。

あと、zone "." について、キャッシュを置くのが一般的らしいので、そのうちやろう。

このあたり、全部参考URLに書いてあった気がする。

3.
/var/log/named ディレクトリを owner named:named で作る。
/etc/logrotate.d/named を直す(/var/log/named/named.log を指すように) 。

4./var/named/の中にzoneファイルを作る
- localhost 正引きファイル
- localhost 逆引きファイル
- 独自ドメイン正引きファイル

独自ドメインを 固定 IP Address でやっているが、
逆引きは ISP の DNS に登録されているので、独自ドメイン逆引きはやらない。

以下設定そのまんま。dig れば解ることなんだけど、一応一部伏せつつw

file:localhost.zone
$TTL 1D
@   IN    SOA    localhost.    root.localhost. (
       2005021401
       3H
       15M
       1W
       1D )
       IN    NS     localhost.
       IN    A      127.0.0.1


file:0.0.127.in-addr.arpa
$TTL 1D
@   IN    SOA    localhost.    root.localhost. (
                      2005021401
                      3H
                      15M
                      1W
                      1D )
    IN    NS     localhost.
1   IN    PTR    localhost.

file:pizzica.to の抜粋
$TTL 3600
@    IN SOA jk4.pizzica.to. hogeroot.pizzica.to. (
	2006020801	    ;serial
	3H		    ;Refresh 3H
	15M		    ;Retry 15M 
	1W		    ;Expire 1W
	1D		    ;Minimum 1D
	)

	IN NS XXxXXxXXxXXX.xxxx.xxxx.xxxx.ne.jp.
	IN NS nsXX.zoneedit.com.
	IN NS nsXX.zoneedit.com.

	IN MX 10 eighty.pizzica.to.
	IN MX 20 jk.pizzica.to.

@	IN A 59.87.28.134	
jk	IN A 59.87.28.130
eighty	IN A 59.87.28.134
www	IN A 59.87.28.134
om	IN CNAME www
・$TTLは、他のサーバがキャッシュする時間なので、設定変更中は短く最終的には長く。全てのファイルで指定。
・SOA/NS は全てのファイルで指定。
・SOA 行頭の @ は、 named.conf で定めたドメイン名(pizzica.to.)になる。他でも同様。
・IN は internet のことだそうで、常にIN。NS でも MX でも A でも CNAME でも。
・hostname 等の最後は . をつける。つけないと、ドメイン名が追加される。
om = om.pizzica.to. om.pizzica.to. = om.pizzica.to. om.pizzica.to = om.pizzica.to.pizzica.to と解釈される。
・SOA は hostname serveradmin で、server admin はメアドだが、@ ではなく.をつけ、最後の.も忘れずに。
・SOA のカッコ内は、pizzica.to ファイルのコメントのとおりだが、Serial ってのは、ファイルを変更する都度数字を増やす。増やし忘れていると、セカンダリが情報を更新されてないとみなしてしまう。日付+枝版にするのが解りやすくていいらしい。Serial 以外はよくわからん(爆)

・NS はネームサーバ。セカンダリを指定しておかないと、情報が転送されない。自分自身も指定しておく。
・NS 登録は localhostの正/逆引きでは localhost だけでいい。
・NS の zoneedit.com の奴はもちろん、zoneedit.com が指定するものを。

・MX はメールサーバ。優先順位を示す番号をつける他はNSと同様。IPアドレスではなく hostname で書くものらしい。

・A は正引き用の名前とIP アドレスの対応づけを定義する。 「名前 IN A IPアドレス」
・CNAME は別名を定義する。

・PTR は逆引きの定義なので、逆引きファイルにしか書かれていない。
 たぶん、行頭の1 は 127.0.0."1" の 1なんだろうな。(引けるからいいや)

5.設定確認 /sbin/chkconfig で自動起動の設定。 /sbin/service で起動。
設定ファイルのチェックは

#/usr/sbin/named-checkconf /etc/named.conf
#/usr/sbin/named-checkzone pizzica.to /var/named/pizzica.to

とかやることで出来る。エラーでないのを確認したら、chkconfig/service で起動。

# /sbin/chkconfig named on
# /sbin/service named start

/var/log/messages, /var/log/named/named.log を確認する。

6.zoneedit.com で slave として登録をしてやる。
無料でプライマリセカンダリ両方でも、セカンダリ2つでもできるというサービスなり。
英語読めない人にはつらいのかもしれないけど、日本語でも似たサービスあるんじゃないかと。

7. dig で動作確認
dig が入ってないなら、 apt-get install bind-utils で。nslookup もこれで入る。

$ dig @localhost ANY pizzica.to
$ dig @other-dns-server.zoneedit.com SOA pizzica.to
$ dig @other-dns-server.dokkanodomain.com SOA pizzica.to
$ dig om.pizzica.to
$ dig MX pizzica.to
$ dig @localhost 1.0.0.127.in-addr.arpa

とかやって引けるかどうか。@でDNSサーバを指定できるので、zoneedit.com のセカンダリや、関係ない外部DNSサーバなんかを指定して情報の流通状況を把握し、行き渡ったら終了。
DNSサーバの指定がない場合、/etc/resolv.conf の中のサーバ使ってくれる。

ちなみに、最後のは逆引きの確認。arpa とかよくわかんないってんなら、

$ nslookup 127.0.0.1 -server localhost

とかやってもいい。

うまくいかないなら、ps aux で named 走っているかってのと、ログの内容見直すのと。
まぁ、当然 slave が情報もっていくまで時間はかかるが、ZONE転送があると履歴がログに残るので、それ見てから。

8./etc/resolv.conf は好きに書き換える。
自分は敢えて ISP のを指定して、ヨソで正しく引けているか確認している。

投稿者 JK : 2006年02月08日 15:41