[したいこと・しりたいこと]
[環境]
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