vmsolaris10_32 IN A 192.168.10.46のように「_」があると正引きがうまく動作しないので注意!!
bind9.xには必要なため、先にopensslをインストールする。
ここから bindはDownloadしてくる。
$ tar zxvf bind-9.2.3.tar.gz $ cd bind-9.2.3 $ ./configure --with-openssl=/usr/local/ssl --prefix=/usr/local $ make $ su # make install
Bind9.6では(1)の設定がないとmessagesに以下のようなエラーが別ネットのPCから検索すると出る
Jan 5 09:28:30 sakura named[4803]: client 10.10.1.11#65209: view local: query (cache) 'www.coffice.co.jp/A/IN' denied
/usr/local/etc/named.confに
// Config file for BIND 9
acl "localnet" {
192.168.10.0/24;
127.0.0.1;
};
options {
directory "/var/named";
auth-nxdomain no; <---#auth-nxdomain' option is now 'no'というエラーが出るときなどは明示的にyesにする
(やっていることに対する確証がない限りは auth-nxdomain を no にしてはならない
yesではクエリー発行元にNXDOMAIN(non- existent domain)を返す際に、SOAでない場合も、強制的にAAビットをたてます)
// allow-query { localnet; }; <---「 BIND9.6(9.3ではなくても動作した)」
では、allow-query-cacheという項目が追加され、allow-query-cacheは指定されない
場合は「ローカルのみ」(同一サブネット)からしか許可されない。allow-queryを指定
すればallow-query-cacheも同じ指定になる。よって「localnet」でキャッシュ経由で
ひかせるためにはこの設定が必要。(1)
allow-query { any; }; <--localnetを指定すると外部からアクセス
できなくなるのでanyを指定。match-clientsではview全体を指定し、allow-queryは
optionsでは全体 指定し、zoneごとでも指定可能。optionsの指定よりzoneで指定
のほうが優先。
allow-transfer{ <---指定ホスト以外にzone転送を禁止(プライマリにはセカンダリを指定)
61.122.216.211;
};
};
view "local" {
match-clients { "localnet"; };
recursion yes;
zone "ism.ne.jp" {
type master;
file "named.hosts";
notify yes; <--サーバのデータベースが変更になったときセカンダリに通知する。
};
zone "10.168.192.in-addr.arpa" {
type master;
file "named.rev";
notify yes;
};
zone "." {
type hint;
file "root.cache";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
};
view "world" {
match-clients { any; };
recursion no; <-自ら管理しているドメイン情報以外は回答しない
zone "ism.ne.jp" {
type master;
file "named.hosts";
notify yes;
};
zone "10.168.192.in-addr.arpa" {
type master;
file "named.rev";
notify yes;
};
zone "." {
type hint;
file "root.cache";
};
};
参考:
外部からのアクセスからもしネームサーバとして使用させたくない場合は
"world"にzone "." をいれなければ、引くことができなくなるの安全?
/var/named/named.hostsに
;
; vvine26rc1.ism.ne.jp /var/named/named.hosts
;
$TTL 1D
@ IN SOA vvine26rc1.ism.ne.jp. root.vvine26rc1.ism.ne.jp. (
1 ; Serial (1)
10800 ; Refresh (2)
1800 ; Retry (3)
3600000 ; Expire (4)
86400 ) ; Minimum (5)
NS vvine26rc1.ism.ne.jp.
; NS ns01.mctv.ne.jp.
MX 10 vvine26rc1.ism.ne.jp.
@ A 192.168.10.21
vvine26rc1 A 192.168.10.21
ax4bpro IN A 192.168.10.24
IN MX 5 ax4bpro.ism.co.jp.
p4t IN A 192.168.10.13
IN MX 5 vp4t.ism.co.jp.
barpro3 IN A 192.168.10.253
(1)シリアル番号
増加していればゾーン転送を開始します。西暦(4けた)+月(2けた)+日
(2けた)+インクリメント値(2けた)が使用されることが多く、32bit値で
格納されるため最大値は「4294967295」になります。この値を超えるとゾーン
データの読み込みに失敗するため、注意が必要です。
(2)リフレッシュ間隔
マスターのゾーンデータの更新確認を行う間隔を指定します。間隔が長過ぎる
と更新にタイムラグが発生し、短過ぎると頻繁にSOA問い合わせが発生するため
、大抵は数時間程度に設定します。
(3)リトライ間隔
ゾーン転送に失敗した場合、「リトライ間隔」分の間を置き、再度ゾーン
転送を試みます。通常は「リフレッシュ間隔」より短い値を指定します。
(4)ゾーンの有効期限
マスターとのゾーン転送が滞ってしまい、スレーブに保存されたデータが
「ゾーンの有効期限」を過ぎた場合は、そのゾーンに対する問い合わせ要求
に返答しなくなります。古い内容で返答するより、返答そのものをしない方
がいいという考えに基づいています。多くの場合は1週間程度を指定しますが、
マスターとの接続状況によっては長めに取ることもあります。
(5)ネガティブキャッシュTTL
ドメインが存在しないといった、失敗した結果をキャッシュする時間
/var/named/named.revに
;
; vvine26rc1.ism.ne.jp /var/named/named.rev
;
$TTL 1D
@ IN SOA vvine26rc1.ism.ne.jp. root.vvine26rc1.ism.ne.jp. (
1 ; Serial
10800 ; Refresh
1800 ; Retry
3600000 ; Expire
86400 ) ; Minimum
NS vvine26rc1.ism.ne.jp.
; NS ns01.mctv.ne.jp.
21 PTR vvine26rc1.ism.ne.jp.
13 PTR p4t.ism.ne.jp.
24 PTR ax4bpro.ism.ne.jp.
253 PTR barpro3.ism.ne.jp.
/var/named/named.localに
;
; vvine26rc1.ism.ne.jp /var/named/named.local
;
$TTL 3D
@ IN SOA vvine26rc1.ism.ne.jp. root.vvine26rc1.ism.ne.jp. (
1 ; Serial
10800 ; Refresh
1800 ; Retry
3600000 ; Expire
86400 ) ; Minimum
NS vvine26rc1.ism.ne.jp.
1 PTR localhost.
/var/named/root.cacheに
; This file holds the information on root name servers needed to ; initialize cache of Internet domain name servers ; (e.g. reference this file in the "cache . " ; configuration file of BIND domain name servers). ; ; This file is made available by InterNIC ; under anonymous FTP as ; file /domain/named.cache ; on server FTP.INTERNIC.NET ; -OR- RS.INTERNIC.NET ; ; last update: Jan 29, 2004 ; related version of root zone: 2004012900 ; ; ; formerly NS.INTERNIC.NET ; . 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 ; ; formerly NS1.ISI.EDU ; . 3600000 NS B.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201 ; ; formerly C.PSI.NET ; . 3600000 NS C.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 ; ; formerly TERP.UMD.EDU ; . 3600000 NS D.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 ; ; formerly NS.NASA.GOV ; . 3600000 NS E.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 ; ; formerly NS.ISC.ORG ; . 3600000 NS F.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 ; ; formerly NS.NIC.DDN.MIL ; . 3600000 NS G.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 ; ; formerly AOS.ARL.ARMY.MIL ; . 3600000 NS H.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 ; ; formerly NIC.NORDU.NET ; . 3600000 NS I.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 ; ; operated by VeriSign, Inc. ; . 3600000 NS J.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30 ; ; operated by RIPE NCC ; . 3600000 NS K.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 ; ; operated by ICANN ; . 3600000 NS L.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12 ; ; operated by WIDE ; . 3600000 NS M.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33 ; End of File
を作成する。
ユーザnamed,グループnamedがあること確認して
/usr/local/sbin/named -u named
で起動する
ただし先に/usr/local/var/runのデイレクトリを作成する必要がある作成さいないと エラー1のようなエラーで起動しない。
# mkdir -p /usr/local/var/run # chown -R named.named /usr/local/var/run
エラー1:
/var/log/messages
Mar 13 13:36:56 vvine26rc1 named[10509]: couldn't open pid file '/usr/local/var/run/named.pid': No such file or directory Mar 13 13:36:56 vvine26rc1 named[10509]: exiting (due to early fatal error)
$ nslookup Note: nslookup is deprecated and may be removed from future releases. Consider using the `dig' or `host' programs instead. Run nslookup with the `-sil[ent]' option to prevent this message from appearing. > server 192.168.10.21 Default server: 192.168.10.21 Address: 192.168.10.21#53 > p4t.ism.ne.jp Server: 192.168.10.21 Address: 192.168.10.21#53 Name: p4t.ism.ne.jp Address: 192.168.10.13 www.matsusaka-u.ac.jp Server: 192.168.10.21 Address: 192.168.10.21#53 Non-authoritative answer: Name: www.matsusaka-u.ac.jp Address: 192.244.75.3
# cd /etc # mv rndc.conf rndc.conf.org #/usr/sbin/rndc-confgen > rndc.conf
rndc.conf
# Start of rndc.conf
key "rndckey" {
algorithm hmac-md5;
secret "*************************";
};
options {
default-key "rndckey";
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf
#以下をnamed.confにコメントアウトを外して追加
# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndckey" {
# algorithm hmac-md5;
# secret "*************************";
# };
#
# controls {
# inet 127.0.0.1 port 953
# allow { 127.0.0.1; } keys { "rndckey"; };
# };
named.conf
rndc.confのコメント部のコメントを外し、named.confに追加する
zone "." {
type hint;
file "root.cache";
};
};
#以下が追加された内容
# Use with the following in named.conf, adjusting the allow list as needed:
key "rndckey" {
algorithm hmac-md5;
secret "*************************";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndckey"; };
};
# End of named.conf
確認
named再起動後
# /usr/sbin/rndc status version: 9.6-ESV-R2 CPUs found: 1 worker threads: 1 number of zones: 18 debug level: 0 xfers running: 0 xfers deferred: 0 soa queries in progress: 0 query logging is OFF recursive clients: 0/0/1000 tcp clients: 0/100 server is up and running
Vine5.xここまで
#/usr/local/sbin/dnssec-keygen -a hmac-md5 -r /dev/urandom -b 512 -n user bind
Krndc.+157+29661.key、Krndc.+157+29661.private が作成される
Krndc.+157+29661.key rndc. IN KEY 0 2 157 (公開key) Krndc.+157+29661.private Private-key-format: v1.2 Algorithm: 157 (HMAC_MD5) Key: (秘密Key)
# cd /usr/local/etc # /usr/local/sbin/rndc-confgen > rndc.conf
/usr/local/etc/rndc.confnに秘密鍵をsecretのところに書き込む
# Start of rndc.conf
key "rndc-key" {
algorithm hmac-md5;
secret "(ここに秘密Keyを入れる)";
};
options {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf
# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
# algorithm hmac-md5;
# secret "yrQR7058dZDMOJA5CxeRrg==";
# };
#
# controls {
# inet 127.0.0.1 port 953
# allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf
/usr/local/etc/named.confの最後にに追加
key "rndc-key" {
algorithm hmac-md5;
secret "ここに公開Keyを入れる";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
#/usr/local/sbin/named -u named
で起動後
# /usr/local/sbin/rndc stop
で終了を確認
キャッシュ時間の確認
$ dig ism.xxxx.co.jp
; <<>> DiG 9.2.1 <<>> ism.xxxx.co.jp
;; global options: printcmd
;; Got answer:
(略)
;; ANSWER SECTION:
ism.xxxx.co.jp. 1800 IN A xxx.xxx.189.223
^^^^この時間がリフレッシュされるまでの時間(秒)
少し経って再度実行
$ dig ism.xxxx.co.jp
;; ANSWER SECTION:
ism.xxxx.co.jp. 1563 IN A xxx.xxx.189.223
^^^^時間が減っている
強制的にキャッシュをクリアするには
# rndc flush
named.confだけ、以下のようにする。(追加する)
root.cache、named.localはプリマリと同じようにする。先に作成しておく。
プライマリが変更されたら通知命令がセカンダリに送られる。これでセカンダリはプライマリからゾーンファイルをとる。このときのプライマリにはセカンダリサーバへゾーンファイルの転送を許可しておく。optionの中にallow-transferでセカンダリを指定しておく。
allow-transfer{
10.99.99.xx; <= セカンダリのIP
10.99.99.yy; <= セカンダリのIP
};
セカンダリの指定は各ゾーンファイルでNSで指定する。そのため、正引きと逆引きで別のサーバも指定可。
また、名前解決はUDPの53だがゾーン転送はTCPの53を使用する。
うまく起動すると/var/named/の下にism.ne.jp、10.99.99.0.rev
というファイルが作成される。
named.conf (マスタのIP 10.99.99.125)
// Config file for BIND 9セカンダリ
acl "localnet" {
10.99.99.0/24;
127.0.0.1;
};
options {
directory "/var/named";
auth-nxdomain no;
};
view "local" {
match-clients { "localnet"; };
recursion no;
zone "ism.ne.jp" {
type slave; <---変更点
file "ism.ne.jp";
masters { <---変更点
10.99.99.125;
};
};
zone "99.99.10.in-addr.arpa" {
type slave; <---変更点
file "10.99.99.0.rev";
masters { <---変更点
10.99.99.125;
};
};
zone "." {
type hint;
file "root.cache";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
};
view "world" {
match-clients { any; };
recursion no;
zone "ism.ne.jp" {
type slave; <---変更点
file "ism.ne.jp";
masters { <---変更点
10.99.99.125;
};
};
zone "99.99.10.in-addr.arpa" {
type slave; <---変更点
file "10.99.99.0.rev";
masters { <---変更点
10.99.99.125;
};
};
zone "." {
type hint;
file "root.cache";
};
};
mastersオプションは、スレーブのnamedに権限のあるゾーン情報を要求するための
IPアドレス(マスターのIPアドレス)
セカンダリ起動時のセカンダリのログ
# /usr/local/sbin/named -u named # tail /var/log/messages Mar 17 16:09:47 vvine26r3dnssec named[1208]: transfer of '99.99.10.in- addr.arpa/IN' from 10.99.99.125#53: end of transfer Mar 17 16:09:47 vvine26r3dnssec named[1208]: zone 99.99.10.in-addr.arpa/IN: sending notifies (serial 2) Mar 17 16:09:47 vvine26r3dnssec named[1208]: received notify for zone '99.99.10.in-addr.arpa' Mar 17 16:09:47 vvine26r3dnssec named[1208]: zone 99.99.10.in-addr.arpa/IN: transferred serial 2 Mar 17 16:09:47 vvine26r3dnssec named[1208]: transfer of '99.99.10.in-addr.arpa/IN' from 10.99.99.125#53: end of transfer Mar 17 16:09:47 vvine26r3dnssec named[1208]: zone 99.99.10.in-addr.arpa/IN: sending notifies (serial 2) Mar 17 16:09:47 vvine26r3dnssec named[1208]: zone ism.ne.jp/IN: transferred serial 2 Mar 17 16:09:47 vvine26r3dnssec named[1208]: transfer of 'ism.ne.jp/IN' from 10.99.99.125#53: end of transfer Mar 17 16:09:47 vvine26r3dnssec named[1208]: zone ism.ne.jp/IN: sending notifies (serial 2) Mar 17 16:09:48 vvine26r3dnssec named[1208]: received notify for zone 'ism.ne.jp'
プライマリ側のシリアルを上げプロセスにHUP信号を送ったときの
セカンダリ側のログ(/var/log/messages)
これで、セカンダリ側に新しい情報が通知されたことが確認できる。
プライマリのIPは10.99.99.125
プライマリ側でbindにHUP信号送ったときのセカンダリのログ
Mar 18 09:13:57 vvine26r3dnssec named[977]: received notify for zone '99.99.10.in-addr.arpa' Mar 18 09:13:57 vvine26r3dnssec named[977]: zone 99.99.10.in-addr.arpa/IN: transferred serial 4 Mar 18 09:13:57 vvine26r3dnssec named[977]: transfer of '99.99.10.in-addr.arpa/IN' from 10.99.99.125#53: end of transfer Mar 18 09:13:57 vvine26r3dnssec named[977]: zone 99.99.10.in-addr.arpa/IN: sending notifies (serial 4) Mar 18 09:13:57 vvine26r3dnssec named[977]: received notify for zone 'ism.ne.jp' Mar 18 09:13:57 vvine26r3dnssec named[977]: received notify for zone 'ism.ne.jp' Mar 18 09:13:57 vvine26r3dnssec named[977]: received notify for zone '99.99.10.in-addr.arpa' Mar 18 09:13:57 vvine26r3dnssec named[977]: received notify for zone '99.99.10.in-addr.arpa' Mar 18 09:13:57 vvine26r3dnssec named[977]: zone ism.ne.jp/IN: transferred serial 4 Mar 18 09:13:57 vvine26r3dnssec named[977]: transfer of 'ism.ne.jp/IN' from 10.99.99.125#53: end of transfer Mar 18 09:13:57 vvine26r3dnssec named[977]: zone ism.ne.jp/IN: sending notifies(serial 4) Mar 18 09:13:58 vvine26r3dnssec named[977]: received notify for zone 'ism.ne.jp'
余談
.comや.netはドメイン登録し、運用するにはセカンダリが必要なようだ。
既存のドメインにabc.ne.jpを追加する。
named.confにゾーンファイルの追加を追加する。新しいゾーンファイルを/var/named に追加。逆引きは同じファイルに記述する。
named.confに追加
zone "abc.ne.jp" {
type master;
file "abc.hosts";
notify yes;
};
/var/named/abc.hosts
;
; vvine26r3.abc.ne.jp /var/named/abc.hosts
;
$TTL 1D
@ IN SOA vvine26r3.abc.ne.jp. root.vvine26r3.abc.ne.jp. (
4 ; Serial
600 ; Refresh
1800 ; Retry
3600000 ; Expire
86400 ) ; Minimum
NS vvine26r3.abc.ne.jp.
; NS vvine26r3dnssec.ism.ne.jp.
MX 10 vvine26r3.abc.ne.jp.
@ A 10.99.99.125
vvine26r3 A 10.99.99.125
abc1 IN A 10.99.99.200
IN MX 5 abc1.abc.ne.jp.
abc2 IN A 10.99.99.228
IN MX 5 abc2.abc.ne.jp.
mail IN A 10.99.99.229
IN MX 5 mail.abc.ne.jp.
/var/named/10.99.99.0.revに追加する。
128 PTR vvine26r3dnssec.ism.ne.jp. 127 PTR uso5004.ism.ne.jp. (以下追加) ; abc.ne.jp 200 PTR abc1.abc.ne.jp. 228 PTR abc2.abc.ne.jp. 229 PTR mail.abc.ne.jp.
/var/log/var/log/messagesに
lame server on '120.4.249.61.in-addr.arpa' (in '4.249.61.in-addr.arpa'?): 203.240.193.11#53: 1 Time(s)
のようなエラーが出るこれはIPアドレスの逆引き情報を持っているはず
のDNS Serverが、権限がないと返答する。
そのDNS Serverの逆引きが間違えているか、DNS情報の伝播が遅れている。
この場合、エラーを出さないようにnamed.confに
// 逆引きのエラーをログらないようにするための設定
options {
directory "/var/named";
};
logging {
category lame-servers { null; };
};
をこのようにoptionsの後に追加する。
同じようなエラーで
lame server on 'ホスト名' (in 'ホスト名'?): [DNS ServerのIPアドレス].53 'DNS Server名'
ホスト名の正引き情報を持っているはずのDNS Serverが、権限がないと返答する。
そのDNS Serverの正引き設定が間違えているか、DNS情報の伝播が遅れている。
登録情報の全てのリストが出ないことをチェック
Windowsのnslookコマンドでそのサーバのlistが取れるかチェック
$ nslookup > ls -d abc-u.ac.jp [sakura.abc-u.ac.jp] abc-u.ac.jp. SOA sakura.abc-u.ac.jp root.sakura.abc-u.ac.jp. (200204182 10800 1800 3600000 86400) abc-u.ac.jp. NS ns01.mctv.ne.jp abc-u.ac.jp. NS sakura.abc-u.ac.jp abc-u.ac.jp. MX 10 mail.abc-u.ac.jp abc-u.ac.jp. A 192.168.10.3 botan A 192.168.10.12 mail A 192.168.10.5 mail MX 5 mail.abc-u.ac.jp mail2 A 192.168.10.14 mail2 MX 5 mail2.abc-u.ac.jp maple A 192.168.10.22 maple MX 5 mail.abc-u.ac.jp matsu A 192.168.10.1 matsu MX 5 mail.abc-u.ac.jp www A 192.168.10.3 www MX 5 mail.abc-u.ac.jp www2 A 192.168.10.4 www2 MX 5 www2.abc-u.ac.jp abc-u.ac.jp. SOA sakura.abc-u.ac.jp root.sakura.abc-u.ac.jp. (200204182 10800 1800 3600000 86400) >
このように一覧を出さないようにするには named.confに
options {
directory "/var/named";
auth-nxdomain no;
allow-transfer{ <---ここを追加
61.xxx.xxx.xxx;
};
};
allow-transfer{ }を追加する ただしこの中に指定するIPアドレスは最低1つは必要のようだ空欄や;だけではうまく動作しないようだ。そこで以下のようにする。
allow-transfer{
none;
};
windows上のnslookupで確認
> server 192.168.75.1 Default Server: aa.aaa-abc-u.ac.jp Address: 192.168.75.1 > ls -d aa-abc-u.ac.jp [aa.aa-abc-u.ac.jp] *** Can't list domain aa-abc-u.ac.jp: Query refused >
ここに詳しくサブドメイン等bind9.xについて説明がある。