Dell Optiplex GXa SolarisTM 9  x86  12/02

BIND-9.3.0

戻る
※ 事前に、
libtool-1.5.10 openssl-0.9.7e の2つをインストールしておく必要がある。
必要なソフトウェア:
bind-9.3.0.tar.gz (22-Sep-2004 Rerease) ftp://ftp.isc.org/isc/bind9/9.3.0/
Domain 例:
Domain1 = domain1.com FQDN = ns1.domain1.com IP Address = 219.117.193.19 プライマリDNS = 自サーバ 219.117.193.19 セカンダリDNS = tegtan1.interlink.or.jp 203.141.128.33 バーチャルドメインとして、 Domain2 = domain2.tv FQDN = domain2.tv IP Address = 219.117.193.19 プライマリDNS = ns1.domain1.com 219.117.193.19 セカンダリDNS = tegtan2.interlink.or.jp 203.141.128.34
構 成:
外部・内部それぞれの問い合わせに対する応えを変えるため、split DNSを使用する。
準 備: ・ユーザーの追加
SuperUserになる。
$ su password:
新規グループnamedを作成する。
# groupadd named
新規ユーザーnamedを作成する。
# useradd -g named -s /bin/false named
・types.h (gccのヘッダファイル)の入れ替え
後のコンパイル中に以下のようなエラーが出されて止まってしまう現象に見舞われた。 #############################################################
In file included from /usr/include/sys/reg.h:13, from /usr/include/sys/regset.h:24, from /usr/include/sys/ucontext.h:21, from /opt/local/bin/../lib/gcc/i386-pc-solaris2.9/3.4.1/include/sys/signal.h:249, from /usr/include/signal.h:27, from app.c:29: /usr/include/ia32/sys/reg.h:300: error: parse error before "upad128_t" /usr/include/ia32/sys/reg.h:302: error: parse error before '}' token /usr/include/ia32/sys/reg.h:309: error: field `kfpu_fx' has incomplete type /usr/include/ia32/sys/reg.h:331: error: parse error before "upad128_t" /usr/include/ia32/sys/reg.h:338: error: parse error before '}' token /usr/include/ia32/sys/reg.h:339: error: parse error before '}' token /usr/include/ia32/sys/reg.h:376: error: parse error before "fpregset_t" In file included from /opt/local/bin/../lib/gcc/i386-pc-solaris2.9/3.4.1/include/sys/signal.h:249, from /usr/include/signal.h:27, from app.c:29: /usr/include/sys/ucontext.h:69: error: parse error before "mcontext_t" /usr/include/sys/ucontext.h:71: error: parse error before '}' token make[3]: *** [app.lo] Error 1 make[3]: Leaving directory `/opt/src/bind-9.3.0/bind-9.3.0/lib/isc/unix' make[2]: *** [subdirs] Error 1 make[2]: Leaving directory `/opt/src/bind-9.3.0/bind-9.3.0/lib/isc' make[1]: *** [subdirs] Error 1 make[1]: Leaving directory `/opt/src/bind-9.3.0/bind-9.3.0/lib' make: *** [subdirs] Error 1
############################################################# どうやら、以前当てたパッチに原因がありそうなので、とりあえず以下の対処で回避した。
# cd /usr/local/lib/gcc/i386-pc-solaris2.9/3.4.1/include/sys # mv types.h types.h_backup # cp /usr/include/sys/types.h ./
一般ユーザーに戻る。
$ exit
インストール:
作業ディレクトリを作成する。
$ mkdir /opt/src/bind-9.3.0
作成したディレクトリに移動する。
$ cd /opt/src/bind-9.3.0
アーカイブをダウンロードする。
$ wget ftp://ftp.isc.org/isc/bind9/9.3.0/bind-9.3.0.tar.gz
解凍展開する。
$ tar xozf bind-9.3.0.tar.gz
展開されたディレクトリに移る。
$ cd bind-9.3.0
環境変数を指定しつつ最適化させる。
$ CC=gcc ./configure \ --sysconfdir=/etc \ --with-libtool \ --with-openssl=/usr/local/ssl
コンパイルする。
$ make #(結構時間がかかる)
SuperUserになる。
$ su password:
インストールする。
# make install
キーの作成:
/etc/rndc.keyを作成させる
# /usr/local/sbin/rndc-confgen -a
共通鍵を作成する。
# dnssec-keygen -a hmac-md5 -b 512 -n HOST domain1
現在自分がいるディレクトリの直下にKdomain1.+123+45678.keyとKdomain1.+123x+45678.private が作成されたので、moreなりcatなりlessなりでKdomain1.+123+45678.privateを開く。
#cat Kdomain1.+123+45678.private
例えば以下のような鍵が表示されるので、keyをメモ(メモリにコピー)しておく。
Private-key-format: v1.2 Algorithm: 157 (HMAC_MD5) Key: AheAheAheAheAheAheAheAheAheAheAhe=
忘れないうちに共通鍵ファイルを削除する。
# rm Kdomain1.*
設 定:
/etc/rndc.confをviで作成する。
# vi /etc/rndc.conf
以下の内容を記述して保存する。(secretには上記のKeyを貼り付ける)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; options { default-server 127.0.0.1; default-key "domain1"; }; server 127.0.0.1{ key "domain1"; }; key "domain1" { algorithm hmac-md5; secret "AheAheAheAheAheAheAheAheAheAheAhe="; }; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
作成したrndc.confと、rndc.keyのパーミッションを厳しくしておく。
# chmod 600 /etc/rndc.conf /etc/rndc.key
また、所有ユーザーと所属グループもnamedに変更しておく。
# chown named:named /etc/rndc.conf /etc/rndc.key
/etc/named.confをviで作成する。
# vi /etc/named.conf
以下の内容を記述して保存する。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; options { directory "/var/named"; auth-nxdomain yes; pid-file "/var/named/named.pid"; version "10.3.2"; }; controls { inet 127.0.0.1 allow { 127.0.0.1; } keys { domain1; }; }; key "domain1" { algorithm hmac-md5; secret "AheAheAheAheAheAheAheAheAheAheAhe="; }; view "internal" { match-clients { 192.168.0.0/24; 127.0.0.0/8; }; recursion yes; zone "." { type hint; file "root.cache"; }; zone "localhost" { type master; file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" { type master; file "localhost.rev"; }; zone "domain1.com" { type master; file "domain1.com.internal.zone"; allow-transfer { 127.0.0.1; 192.168.0.0/24; }; }; zone "domain2.tv" { type master; file "domain2.tv.internal.zone"; allow-transfer { 127.0.0.1; 192.168.0.0/24; }; }; zone "0.168.192.in-addr.arpa" { type master; file "255.168.192.in-addr.arpa"; allow-transfer { 127.0.0.1; 192.168.255.0/24; }; }; zone "134.141.203.in-addr.arpa" { type slave; file "134.141.203.in-addr.arpa"; allow-transfer { 127.0.0.1; 192.168.0.0/24; }; masters { 203.141.128.34; }; }; view "external" { match-clients { any; }; recursion no; zone "domain1.com" { type master; file "domain1.com.external.zone"; allow-transfer { 203.141.128.33; }; }; zone "domain2.tv" { type master; file "domain2.tv.external.zone"; allow-transfer { 203.141.128.34; }; }; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
※上記のoptionsのversionは、自分が使っているDNSの  バージョンを秘匿するための記述。" "の中は空欄でも可。  因みに、相手のDNS(例:dns1.domain.net)のバージョンを調べる場合  dig では、
dig @dns1.domain.net CHAOS version.bind TXT
 nslookupでは、
$ nslookup > server dns1.domain.net Default server: dns1.domain.net Address: 192.168.1.10#53 > set type=txt > set class=chaos > version.bind Server: dns1.domain.net Address: 192.168.1.10#53 VERSION.BIND text = "10.3.2" を実行するとこんな感じで表示される。
作成した/etc/named.confのパーミッションを厳しくしておく。
# chmod 600 /etc/named.conf
また、所有ユーザーと所属グループもnamedに変更しておく。
# chown named:named /etc/named.conf
ゾーンファイルを格納しておくディレクトリを作成する。
# mkdir /var/named
作成したディレクトリに移動する。
# cd /var/named/
外向(External)用の正引ゾーンファイルdomain1.com.external.zoneをviで作成する。
# vi /var/named/domain1.com.external.zone
以下の内容を記述して保存する。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; domain1.com For External ; GROUPE Domain1(domain1.com) host to IP address Infomation ; $TTL 86400 @ IN SOA ns1.domain1.com. you.domain1.com. ( 2002050401 ;Serial 10800 ;Refresh 1800 ;Retry 4320000 ;Expire 86400 ;Minimum ) IN NS ns1.domain1.com. IN NS tegtan1.interlink.or.jp. IN NS tegtan2.interlink.or.jp. IN MX 10 mail.domain1.com. ; Host Infomation -------------------------------------------------------- ns1INA 203.141.134.78 nsINCNAMEns1.domain1.com. mailINCNAMEns1.domain1.com. popINCNAMEns1.domain1.com. smtpINCNAMEns1.domain1.com. wwwINCNAMEns1.domain1.com. www2INCNAMEns1.domain1.com. ftpINCNAMEns1.domain1.com. ;------------------------------------------------------------------------- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
内向(Internal)用の正引ゾーンファイルdomain1.com.internal.zoneをviで作成する。
# vi /var/named/domain1.com.internal.zone
以下の内容を記述して保存する。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; domain1.com For Internal ; GROUPE Domain1(domain1.com) host to IP address Infomation ; $TTL 86400 @ IN SOA ns1.domain1.com. you.domain1.com. ( 2002050401 ;Serial 10800 ;Refresh 1800 ;Retry 4320000 ;Expire 86400 ;Minimum ) IN NS ns1.domain1.com. IN MX 10 mail.domain1.com. ; Host Infomation -------------------------------------------------------- ns1INA 192.168.0.150 nsINCNAMEns1.domain1.com. mailINCNAMEns1.domain1.com. popINCNAMEns1.domain1.com. smtpINCNAMEns1.domain1.com. wwwINCNAMEns1.domain1.com. www2INCNAMEns1.domain1.com. ftpINCNAMEns1.domain1.com. ;------------------------------------------------------------------------- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
バーチャルドメインの外向(External)用正引ゾーンファイルdomain2.tv.external.zoneをviで作成する。
# vi /var/named/domain2.tv.external.zone
以下の内容を記述して保存する。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; domain2.tv For External ; GROUPE Domain(domain2.tv) host to IP address Infomation ; $TTL 86400 @ IN SOA ns1.domain1.com. you.domain1.com. ( 2002050401 ;Serial 10800 ;Refresh 1800 ;Retry 4320000 ;Expire 86400 ;Minimum ) IN NS ns1.domain1.com. IN NS tegtan2.interlink.or.jp. IN MX 10 mail.domain2.tv. ; Host Infomation -------------------------------------------------------- domain2.tv.INA 203.141.134.78 mailINCNAMEdomain2.tv. wwwINCNAMEdomain2.tv. ftpINCNAMEdomain2.tv. ;------------------------------------------------------------------------- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
バーチャルドメインの内向(Internal)用正引ゾーンファイルdomain2.tv.internal.zoneをviで作成する。
# vi /var/named/domain2.tv.internal.zone
以下の内容を記述して保存する。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; domain2.tv For Internal ; GROUPE Domain(domain2.tv) host to IP address Infomation ; $TTL 86400 @ IN SOA ns1.domain1.com. you.domain1.com. ( 2002050401 ;Serial 10800 ;Refresh 1800 ;Retry 4320000 ;Expire 86400 ;Minimum ) IN NS ns1.domain1.com. IN MX 10 mail.domain2.tv. ; Host Infomation -------------------------------------------------------- domain2.tv.INA 192.168.0.150 mailINCNAMEdomain2.tv. wwwINCNAMEdomain2.tv. ftpINCNAMEdomain2.tv. ;------------------------------------------------------------------------- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
localhostの正引ゾーンファイルをviで作成する。
# vi /var/named/localhost.zone
以下の内容を記述して保存する。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; localhost.zone ; Local loop back file of host to IP address $TTL 3600 @ IN SOA domain1.com. you.domain1.com. ( 2002050401 10800 1800 4320000 86400 ) IN NS domain1.com. localhost. IN A 127.0.0.1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
localhostの逆引ゾーンファイルをviで作成する
# vi /var/named/localhost.rev
以下の内容を記述して保存する。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; localhost.rev ; Local loop back file of IP address to host $TTL 86400 @ IN SOA domain1.com. you.domain1.com. ( 20020504011 10800 1800 4320000 86400 ) IN NS domain1.com. 1 IN PTR localhost. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LANの逆引きゾーンファイルをviで作成する。
# vi /var/named/0.168.192.in-addr.arpa
以下の内容を記述して保存する。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 0.168.192.in-addr.arpa ; LAN DNS rev file $TTL 86400 @ IN SOA domain1.com. you.domain1.com. ( 20020504011 10800 1800 4320000 86400 ) INNSdomain1.com. ;---------------------------------------------------------- 1INPTRMN128-SOHO.domain1.com. 2INPTRclient1.domain1.com. 3INPTRclinet2.domain1.com. 150INPTRns1.domain1.com. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
rootDNSの定義ファイルをダウンロードする。
# wget ftp://rs.internic.net/domain/named.root
ダウンロードした定義ファイルの名前を変更する。
# mv named.root /var/named/root.cache
上記で作成したディレクトリとその中の各ゾーンファイルのパーミッションを厳しくしておく。
# chmod 600 /var/named # chmod 600 /var/named/*
また、所有ユーザーと所属グループもnamedに変更しておく。
# chown -R named:named /var/named
起動ファイルの編集。このままだと再起動時に OS付属の in.named が起動してしまうので、起動 ファイルをviで開いて編集しておく。
# vi /etc/rc2.d/S72inetsvc
以下のように変更記述して保存する。
=============================================================== .......省略 'stop') #/usr/bin/pkill -x -u 0 'in.named|inetd'<---- コメントアウト /usr/bin/pkill -x -u 0 -u named 'named|inetd'<---- 新規記述 exit 0 ;; .......省略 #if [ -f /usr/sbin/in.named -a -f /etc/named.conf ]; then<---- コメントアウト # echo 'starting internet domain name server.'<---- コメントアウト # /usr/sbin/in.named &<---- コメントアウト #fi<---- コメントアウト if [ -f /usr/local/sbin/named -a -f /etc/named.conf ]; then<---- 新規記述 /usr/local/sbin/named -u named ; echo "starting internet domain name server."<---- 新規記述 fi<---- 新規記述 .......省略 =============================================================== * スタティックリンクが張られているので /etc/init.d/inetsvc も変更される。
namedを一度終了させる
# /etc/rc2.d/S72inetsvc stop
改めて起動させる
# /etc/rc2.d/S72inetsvc start
/var/adm/messages にエラーが出ていないかを調べる。
# tail /var/adm/messages
May 04 00:00:10 ns1 named[1552]: [ID 866145 daemon.notice] stopping command channel on 127.0.0.1#953 May 04 00:00:10 ns1 named[1552]: [ID 866145 daemon.notice] exiting May 04 00:00:20 ns1 named[1567]: [ID 866145 daemon.notice] starting BIND 9.3.0 -u named May 04 00:00:20 ns1 named[1567]: [ID 866145 daemon.notice] command channel listening on 127.0.0.1#953