2009年8月30日日曜日

ubuntuでbind9を設定ver2

[したいこと・しりたいこと]

[環境]
Ubuntu Jaunty Jackalope 9.04 Server ver
username:user01
USB 104Key (US)
インストール時にホストネームをpc-serverと指定した
インストール時にIPアドレスを192.168.0.2と指定した

ISPから配布されたDNSアドレス
123.45.67.89;
123.45.67.90;

一目でローカルテスト用とわかるテストドメイン名
example.localnet

接続ホスト名とIP一覧
defaultgateway:1291.68.0.1
pc-server:192.168.0.2
pc3:192.168.0.3
pc4:192.168.0.4
pc5:192.168.0.5

接続ホスト名と役割一覧
defaultgateway:Buffaloのルーター
pc-server:Ubuntu(仮想マシン)
pc3:Ubuntu(pc-serverのホストマシン)
pc4:クライアント1号
pc5:クライアント2号



[したこと]

(0)
ネットワークアドレスとドメインの確認
ifconfig
ipとethアダプターの確認



1. BIND9のインストール

$ sudo apt-get install bind9




2.ホスト名とドメインの確認と修正
/etc/hostsの修正

$ sudo vi /etc/hosts

変更前
127.0.0.1 localhost
127.0.1.1 pc-server

変更後
127.0.0.1 localhost localhost.loopback
127.0.1.1 pc-server
192.168.0.2 pc-server pc-server.example.localnet



3.名前解決の手段の確認と変更

$ sudo vi /etc/nsswitch.conf

host:の行の先頭に dnsを挿入する
#hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 //desktop ver
#hosts: file dns //server ver
hosts: dns





4. named.conf.optionsの編集

/etc/bind/named.confは変更しない方針


(1)全体に関与するオプションの指定

$ sudo vi /etc/bind/named.conf.options

内部で解決できないアドレスを調べにいくDNSを指定するため、以下の様にコメントアウトされた部分を、

// forwarders {
// 0.0.0.0;
// };

次のように修正し、

forwarders {
123.45.67.89;
123.45.67.90;
};

auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
上記の下にLAN内部のPCだけが参照できるように下記の内容を追記する

allow-query {
127.0.0.0/8;
192.168.0.0/24;
192.168.1.0/24;
};




5. named.conf.localの編集

/etc/bind/named.confは変更しない方針

このDNSサーバーが解決できるホスト名とIPアドレスの組み合わせ辞書の場所の指定

$ sudo vi /etc/bind/named.conf.local

次の内容を追加


// example.localnetのゾーン情報
zone "example.localnet" {
type master;
// example.localの正引きデ-タベースファイル名
file "/etc/bind/db.localnet";
};

// 192.168.0のゾーン情報
zone "0.168.192.in-addr.arpa" {
type master;
// 192.168.0の逆引きデ-タベースファイル名
file "/etc/bind/db.192.168.0";
};


// loopbackのゾーン情報
zone "loopback" {
type master;
// loopbackの正引きデ-タベースファイル名
file "/etc/bind/db.loopback";
};

// 127.0.0のゾーン情報
zone "0.0.127.in-addr.arpa" {
type master;
// 127.0.0の逆引きデ-タベースファイル名
file "/etc/bind/db.127.0.0";
};

//
include "/etc/bind/rndc.key";
controls {
inet 127.0.0.1
allow { 127.0.0.1; }
keys { rndc-key; };
};


6.1 LANに接続している各マシンのホスト名とIPアドレスの対応表(正引き用)を作る
example.localのゾーン情報 (正引き用)を作る
(1)
$ sudo vi /etc/bind/db.localnet

;
; BIND data file for example.localnet
;
$TTL 86400
@ IN SOA ns.example.localnet. root.ns.example.localnet. (
2009010401 ; Serial
8H ; Refresh 28800
4H ; Retry 14400
3D ; Expire 259200
1D ) ; Negative Cache TTL 86400
IN NS ns.example.localnet.
IN A 192.168.0.2
IN MX 10 mail
mail IN A 192.168.0.2
www IN A 192.168.0.2
ftp IN A 192.168.0.2
ns IN A 192.168.0.2
pc-server CNAME ns.example.localnet.
;
defaultgateway IN A 192.168.0.1
pc3 IN A 192.168.0.3
pc4 IN A 192.168.0.4
pc5 IN A 192.168.0.5


6.2 LANに接続している各マシンのホスト名とIPアドレスの対応表(逆引き用)を作る
example.localのゾーン情報 (逆引き用)を作る

$ sudo vi /etc/bind/db.192.168.0

;
; BIND data file for example.localnet
;
$TTL 86400
@ IN SOA ns.example.localnet. root.ns.example.localnet. (
2009010401 ; Serial
8H ; Refresh 28800
4H ; Retry 14400
3D ; Expire 259200
1D ) ; Negative Cache TTL 86400
IN NS ns.example.localnet. ;check domain_name
2 IN PTR ns.example.localnet. ;check machine_name & domain_name
;
1 IN PTR defaultgateway. ;check machine_name & address
3 IN PTR pc3. ;check machine_name & address
4 IN PTR pc4. ;check machine_name & address
5 IN PTR pc5. ;check machine_name & address


7.1 loopbackに接続しているマシンのホスト名とIPアドレスの対応表(正引き用)を作る
loopbackのゾーン情報 (正引き用)を作る

$ sudo vi /etc/bind/db.loopback

;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA loopback. root.loopback. (
2009010401 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS loopback.
@ IN A 127.0.0.1
@ IN AAAA ::1
localhost IN A 127.0.0.1


7.2 loopbackに接続しているマシンのホスト名とIPアドレスの対応表(逆引き用)を作る
loopbackのゾーン情報 (逆引き用)を作る

$ sudo vi /etc/bind/db.127.0.0

;
; BIND reverse data file for loopback interface
;
$TTL 604800
@ IN SOA loopback. root.loopback. (
2009010401 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS loopback.
1 IN PTR localhost.




8. 作成したゾーンファイルの検証
$ named-checkzone example.localnet /etc/bind/db.localnet
$ named-checkzone example.localnet /etc/bind/db.192.168.0
$ named-checkzone 127.0.0.1 /etc/bind/db.loopback
$ named-checkzone 127.0.0.1 /etc/bind/db.127.0.0

9.resolv.confの確認と修正

# sudo vi /etc/resolf.conf

nameserverにpc-serverのアドレスを指定する
nameserver 192.168.0.2


**********************
注意 network-manager を有効にしている場合は そちらで設定すること
注意 そうじゃないと 起動のたびに resolv.confの内容が network-managerで書き換えられる模様
**********************

変更後
#nameserver 123.45.67.89
#nameserver 123.45.67.90
nameserver 192.168.0.2


10. 再起動

$ sudo reboot



11. 確認

$ dig example.localnet
$ dig pc-server.example.localnet
$ dig pc-server.example.localnet MX
$ dig pc5.example.localnet
$ dig @pc-server.example.localnet example.localnet mx
$ dig @pc-server.example.localnet example.localnet soa
$ dig @pc-server.example.localnet pc5.example.localnet
$ dig @127.0.0.1 example.localnet mx

$ nslookup pc-server.example.localnet
$ nslookup pc3.example.localnet
$ nslookup pc5.example.localnet
$ nslookup 192.168.0.2
$ nslookup 192.168.0.5
$ nslookup localhost
$ nslookup 127.0.0.1

[注意]


※ $ sudo /etc/init.d/bind9 restartが失敗して[fail]になる場合

(1)
named.conf.optionsまたはnamed.conf.localが書き間違っている場合
;が抜けている
全角空白、全角スペースは見た目ではわからないので注意

(2)
// 127.0.0のゾーン情報その1
zone "0.0.127.in-addr.arpa" {
type master;
file "/etc/bind/loopback.rev";
};

// 127.0.0のゾーン情報その2
zone "0.0.127.in-addr.arpa" {
type master;
file "/etc/bind/db.127.0.0";
};


のようにzone情報が、ぶつかっている場合




※nslookupでは名前解決できるがFireFoxで名前解決できない場合

(1)
nsswitch.conf
/etc/nsswitch.conf の hosts: 行を確認

hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4

hosts: dns
に変更する





(2)
network-managerとresolv.conf側の問題
(2-a)
resolf.confの内容が間違っている
(2-b)
network-managerが有効になっているのに、resolv.confで設定している
そのため、起動するたびにnetwork-managerが resolv.confを書き換えている



※ 正引きできない

(1)
$ named-checkzone がokと帰ってきたか?

(2)
/etc/hostsの記述違いはないか ?

誤)
192.168.0.2 pc-server pc-server.example.localnet
正)
192.168.0.2 pc-server example.localnet

誤)
192.168.0.2 pc-server .example.local
正)
192.168.0.2 pc-server example.localnet

誤)
192.168.0.2 pc-server localnet
正)
192.168.0.2 pc-server example.localnet

(3)
/etc/bind/db.localnet /etc/bindnamed.conf.local /etc/hosts の3つのファイルの確認
192.168.0.2 example.localnet の組み合わせを書く所に記述ミスはないか?






[参考]


最小限の設定でDNSを使う - adsaria mood
http://d.hatena.ne.jp/adsaria/20090131/1233383628

BIND (DNSサーバー)/Ubuntu 8.04
http://www.shitomi.jp/ubuntu804/bind.html

http://www.atmarkit.co.jp/flinux/rensai/bind915/bind915b.html

@IT:すべての基礎、マスター・ゾーンサーバの設定(2/3)
http://www.atmarkit.co.jp/flinux/rensai/bind902/bind902b.html

@IT:BIND 9のチューニングと大規模運用(2/2)
http://www.atmarkit.co.jp/flinux/rensai/bind911/bind911b.html


最小限の設定でDNSを使う - adsaria mood
http://d.hatena.ne.jp/adsaria/20090131/1233383628

0 コメント: