ローカルのネームサーバー(DNS)の立ち上げ


参考文献:FreeBSDパーフェクトネットワーク(毎日コミュニケーションズ)

DHCPサーバーを立ち上げるとIPアドレスでのネットワーク接続が出来ますが、IPアドレスでの接続だけでは不便なので、IPアドレスをドメイン名に変換してくれるネームサーバー(DNS)を立ち上げます。
DNS-1.GIF - 3,347BYTES

ネームサーバー(DNS)は、一般的にはBINDを使用して立ち上げます。 FreeBSD4.2Rには、最初からBIND8.23が組み込まれているので、それを利用します。

named.confの設定
まずは、named.confファイルを編集します。
/etc/namedb/にnamed.confファイルがあらかじめ用意されているので、このファイルを自分のサーバーの環境に合わせるように編集します。

とりあえず、適当な名前でnamed.confファイルをバックアップしておきましょう。

hoge# cp /etc/namedb/named.conf /etc/namedb/named.sample

そして、named.confファイルをエデイタで編集します。

hoge# ee /etc/namedb/named.conf

以下named.confの内容です。
// 「//」で始まる行は、コメント扱いになります。
//
// $FreeBSD: src/etc/namedb/named.conf,v 1.6.2.1 2000/07/15 07:49:29 kris Exp $
//
// Refer to the named(8) man page for details.  If you are ever going
// to setup a primary server, make sure you've understood the hairy
// details of how DNS is working.  Even with simple mistakes, you can
// break connectivity for affected parties, or cause huge amount of
// useless Internet traffic.
//
// 設定ファイルは/etc/namedbのディレクトリに置くという定義です。

options {
	directory "/etc/namedb";

// In addition to the "forwarders" clause, you can force your name
// server to never initiate queries of its own, but always ask its
// forwarders only, by enabling the following line:
//
//      forward only;

// If you've got a DNS server around at your upstream provider, enter
// its IP address here, and enable the line below.  This will make you
// benefit from its cache, thus reduce overall DNS traffic in the Internet.
//
// 

	forwarders {
		211.11.96.1;
	};
	/*
	 * If there is a firewall between you and nameservers you want
	 * to talk to, you might need to uncomment the query-source
	 * directive below.  Previous versions of BIND always asked
	 * questions using port 53, but BIND 8.1 uses an unprivileged
	 * port by default.
	 */
	 query-source address * port 53;

	/*
	 * If running in a sandbox, you may have to specify a different
	 * location for the dumpfile.
	 */
	dump-file "s/named_dump.db";
};

// Note: the following will be supported in a future release.
//
// 
//
/*
host { any; } {
	topology {
		127.0.0.0/8;
	};
};
*/

// Setting up secondaries is way easier and the rough picture for this
// is explained below.
//
// If you enable a local name server, don't forget to enter 127.0.0.1
// into your /etc/resolv.conf so this server will be queried first.
// Also, make sure to enable it in /etc/rc.conf.
//
// ローカルのネームサーバーで解決できないときは上位のネームサーバーに問い合わせますが
// 世界の/ルートのネームサーバーのアドレスが記載されているファイルです。
// ちなみにnamed.rootファイルはデフォルトで用意されていますので、そのまま使用します。
zone "." {
	type hint;
	file "named.root";
};
//
// IPアドレス(127.0.0.?)の情報は、localhost.revというファイルを、参照。という定義です。(逆引き)
//
zone "0.0.127.IN-ADDR.ARPA" {
	type master;
	file "localhost.rev";
};
//
// ここも、よく解りません。とりあえず支障がないので・・・(^^;;
//
zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.INT" {
	type master;
	file "localhost.rev";
};

// NB: Do not use the IP addresses below, they are faked, and only
// serve demonstration/documentation purposes!
//
// Example secondary config entries.  It can be convenient to become
// a secondary at least for the zone where your own domain is in.  Ask
// your network administrator for the IP address of the responsible
// primary.
//
// Never forget to include the reverse lookup (IN-ADDR.ARPA) zone!
// (This is the first bytes of the respective IP address, in reverse
// order, with ".IN-ADDR.ARPA" appended.)
//
// Before starting to setup a primary zone, better make sure you fully
// understand how DNS and BIND works, however.  There are sometimes
// unobvious pitfalls.  Setting up a secondary is comparably simpler.
//
// NB: Don't blindly enable the examples below. :-)  Use actual names
// and addresses instead.
//
// NOTE!!! FreeBSD runs bind in a sandbox (see named_flags in rc.conf).
// The directory containing the secondary zones must be write accessible 
// to bind.  The following sequence is suggested:
//
//	mkdir /etc/namedb/s
//	chown bind.bind /etc/namedb/s
//	chmod 750 /etc/namedb/s

/*
//zone "foo.jp" {
//	type slave;
//	file "s/domain.com.bak";
//	masters {
//		192.168.1.1;
//	};
//};

//zone "0.168.192.in-addr.arpa" {
//	type slave;
//	file "s/0.168.192.in-addr.arpa.bak";
//	masters {
//		192.168.1.1;
//	};
//};
*/

//
// ドメイン(foo.jp)の情報は、foo.zoneというファイルを参照。という定義です。(正引き)
// ドメイン名(foo.jp)、参照ファイル名(foo.zone)は自分の環境に合わせて書き換えましょう。
//
zone "foo.jp" {
	type master;
	file "foo.zone";
};
//
// IPアドレス(192.168.0.?)の情報は、foo.revというファイルを参照。という定義です。(逆引き)
// IPアドレス(0.168.192)、参照ファイル名(foo.rev)は、自分の環境に合わせて書き換えましょう。
// また、IPアドレスは、ここでは、逆に記入しましょう。
//
zone "0.168.192.in-addr.arpa" in {
	type master;
	file "foo.rev";
};



localhost.revの作成
次に、127.0.0.?の逆引きファイルを作成します。
/etc/namedb/にmake-localhostと言うファイルがあるので、このファイルを使用して、localhost.revファイルを作成します。

hoge# cd /etc/namedb
hoge# sh make-localhost
と、打ち込んでください。
/etc/namedb/に、自分のサーバー用のlocalhost.revというファイルが作成されます。


; maike-localhostで、自動的に作成した場合は、そのまま使用して、問題無いでしょう。
;
;	From: @(#)localhost.rev	5.1 (Berkeley) 6/30/90
; $FreeBSD: src/etc/namedb/PROTO.localhost.rev,v 1.6 2000/01/10 15:31:40 peter Exp $
;
; This file is automatically edited by the `make-localhost' script in
; the /etc/namedb directory.
;

$TTL	3600

@	IN	SOA	hoge.foo.jp. root.hoge.foo.jp.  (
				20180121	; Serial
				3600	; Refresh
				900	; Retry
				3600000	; Expire
				3600 )	; Minimum
	IN	NS	hoge.foo.jp.
1	IN	PTR	localhost.foo.jp.


正引き設定ファイルの設定(foo.zone)
次は、正引き設定ファイルの設定です。
ドメインからIPアドレスを求めることを、正引きといいますが、ここではそのファイルを編集して作成します。
このファイルは、上のlocalhost.revのファイルの一部をコピーするような感じで、編集するとらくでしょう。
正引きファイルはnamed.confで割り当てた、〜zoneというファイルで作成します。この場合はfoo.zoneです。

/etc/namedb/foo.zone
; 「;」で、始まる行は、コメント扱いになります。
;
@       IN      SOA     hoge.foo.jp. root.hoge.foo.jp. (
        200003181       ;Serial
        3600            ;Refresh after 1 hour
        900             ;Retry after 30 minutes
        3600000         ;Expire after 1 week
        3600  )         ;Minimum TTL of 2 hours

; 先頭からここまでは、お決まりの内容です。

; NS=ネームサーバーを表します。
; この例では、192.168.0.?のネームサーバーは、hoge.foo.jpということかな?(^^;
; MXは、メールサーバーを立ち上げたときに有効になります。
                IN      NS      hoge.foo.jp.
		IN	MX 0	hoge
;
; A=ホスト名からIPアドレスの対応付けです。
; この例では、localhostは127.0.0.1だという意味です。
; 何個でも指定出来ます。
;
; ここには、書いていませんが、
; MX=ホストまたはドメイン名宛のメールを、どこのホストに送るかということの、指定。
; CNAME=ホスト、ドメイン名に別名を割り当てます。
;
localhost		IN	A	127.0.0.1
;

hoge		IN	A	192.168.0.15
		IN	MX 0	hoge

逆引きファイルの設定(foo.rev)
IPアドレスから、ドメインを求めることを逆引きと言います。その設定ファイルの編集です。named.confで割り当てた〜.revというファイル名で作成します。
この場合は、foo.revです。

/etc/namedb/foo.rev
; 「;」はコメント扱いになります。
;
@       IN      SOA     hoge.foo.jp. root.hoge.foo.jp. (
        200003181       ;Serial
        3600            ;Refresh 1day
        900             ;Retry 8Hr
        3600000         ;Expire 1000Hr
        3600  )         ;Min 7day
;
;ここまでは、お決まりの設定です。

;
; NS=ネームサーバーを表します。
; この例では、192.168.0.?のネームサーバーは、hoge.foo.jpということかな?(^^;
;
; PTR=IPアドレスから、ホスト名への対応付けです。
;
; ここには、書いていませんが、
; MX=ホストまたはドメイン名宛のメールを、どこのホストに送るかということの、指定。
; CNAME=ホスト、ドメイン名に別名を割り当てます。
;
        IN      NS      hoge.foo.jp.

15	IN	PTR	hoge.foo.jp.

resolv.confの設定
resolv.confでは、どのネームサーバーに問い合わせに行くのかを設定します。
ここに、ブロバイダーのネームサーバーのIPアドレスを書いておけば、ブロバイダーのネームサーバーに問い合わせに行きます。
ここでは、いま設置しているローカルのネームサーバーを使用する様に設定をします。
ローカルのネームサーバーは、ローカルのネームサーバーでネームの解決が出来ないときは、namde.rootに記述されている、世界に数台しか設置されていない、上位(外部)のネームサーバーに問い合わせに行って、そこから下位のネームサーバーに問い合わせに行き、さらに下位へと堂々巡りの様に、ネームの解決ができるまで問い合わせに行きます。
DNS-2.GIF - 3,649BYTES

/etc/resolv.confの内容です。
domain	foo.jp.			#ローカルサーバーのドメインネーム
nameserver	192.168.0.15	#ローカルのネームサーバーアドレス
#nameserver	127.0.0.1	#DNSそのものをインストールしたサーバーの場合は、こっちの方でないとnslookupでDNSを探せない場合があります。
domainはドメイン名です。
nameserverはネームサーバーのアドレスを書き込みます。3つまで指定できます。

ネームサーバー(DNS)の起動
いよいよ、ネームサーバーを起動してみます。

hoge# named -c /etc/namedb/named.conf
と打ち込んでください。

何やら、いろいろとメッセージが出てきますが、とりあえずerrと言うメッセージが無く、Ready to answer queriesというメッセージが出ていれば、ネームサーバーが正常に起動されています。
また、エラーが出ていても、Ready to answer queriesというメッセージさえ出ていれば、とりあえず動作するようです。
起動すると、いろんなメッセージが出てきますが、個々の意味は、よくわかりません。(^^;;

ネームサーバを再起動させる場合は、
named -c /etc/namedb/named.conf restart
と打ち込んでください。

ネームサーバー(DNS)のテスト
テストはnslookupコマンドを使用して、行います。

nslookup ホスト名
nslookup IPアドレス
で、試してみてください。
下記のような感じで、返答が帰ってくれば、正常に動作しています。

hoge# nslookup hoge

hoge# server: hoge.foo.jp hoge# address: 192.168.0.15


hoge# nslookup 192.168.0.15
hoge# server: hoge.foo.jp hoge# address: 192.168.0.15

ネームサーバーの自動起動
サーバー起動時に、ネームサーバーも一緒に起動させましょう。

/etc/rc.confをエデイタで編集します。
rc.conf内なら、どこでもいいので、以下の2行を付け加えてください。
named_enable="YES"
named_flags="-c /etc/namedb/named.conf"

Windws(クライアント)
まずは、MS-DOSプロンプトを開いて、ping ホスト名、またはホスト名+ドメインを打ってください。

ping hoge
PING.GIF - 10,866BYTES
IPアドレスや、pingの応答があれば、okです。
Ctrl+Cキーで終了させます。


命令群、他メモ

SOA
NS ネームサーバーを表す。
複数指定指定可。
上からかかれているサーバーが優先される。
    例: IN NS hoge.foo.jp.
       IN  NS  hoge2.foo.jp.
	  
	  ネームサーバーが2以上ある場合、上からプライマリー、セカンダリ・・・
PTR IPアドレスからホストへの対応付けを行う。
    例: 15 IN PTR hoge.foo.jp.
          16  IN  PTR  hoge1.foo.jp.
    
    上の場合、xxx.xxx.xxx.15のIPアドレスが、hoge.foo.jp.と言うことになる。
    
A ホストからIPアドレスへの対応付けを行います。
    例:  hoge	IN	A	aaa.bbb.ccc.15
          hoge1	IN	A	aaa.bbb.ccc.16
    
MX そのドメインまたはホスト宛のメールをどのホストに送るかを設定します。
    例:  hoge	IN	A	aaa.bbb.ccc.15
		IN	MX 0	hoge
		IN	MX 2	hoge1
		
          hoge1	IN	A	aaa.bbb.ccc.16
		IN	MX 0	hoge1
		
    
上の例だと、hoge宛のメールは、hogeへhoge1宛のメールはhoge1へ届きます。
MXの後に設定するプリファレンスは、メールを送る場合の優先順位で、0〜65535までの数字を使うことが出来ます。

    


BACK