「BIND」の設定

IPアドレスではなく、コンピュータ名でアクセスできるように設定します。
なお、自分の環境は固定IPではないので、ここでの設定は内部でのみの利用となります。
また、簡単に導入する為にパッケージよりインストールすることとします。

「BIND」のインストール

ユーザの作成

「BIND」用のユーザを作成します。

Solaris# groupadd -g 10004 named
Solaris# useradd -u 10004 -g named -s /bin/false named

パッケージをダウンロードし、インストールします。

Solaris# wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/bind-9.3.1-sol10-intel-local.gz
Solaris# gunzip bind-9.3.1-sol10-intel-local.gz <= ダウンロードしたファイルの展開
Solaris# pkgadd -d bind-9.3.1-sol10-intel-local |& tee pkg-bind.log <= パッケージのインストール
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: <= 空Enter

Do you want to install these conflicting files [y,n,?,q] <= y

鍵の作成

rndc経由でnamedを操作する為に、鍵を作成します。

Solaris# rndc-confgen -a <= /etc/rndc.key の作成

Solaris# dnssec-keygen -a hmac-md5 -b 512 -n USER rndc <= 共通鍵の作成
Krndc.+123+45678

Solaris# cat Krndc.+123+45678.private <= 鍵の確認
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogeho==
 <= Key: の後の乱数をコピーする


Solaris# vi /etc/rndc.key <= 鍵の編集
secretの後ろの部分を変更する
key "rndc-key" {
        algorithm       hmac-md5;
        secret "iEiDVMLLrN2ZAS01Uswjyw==";
        ↓
        secret "hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogeho==";
          <= 作成した鍵の Key: より後ろの部分に変更
};


Solaris# rm Krndc.+123+45678.* <= 鍵の削除
「BIND」の設定

まず、「rndc」の設定ファイルを編集し、その後「BIND」の設定ファイルを編集します。

Solaris# vi /etc/rndc.conf <= 「rndc」の設定ファイルの作成
include "/etc/rndc.key" <= インクルードする鍵を指定

options {
        default-server 127.0.0.1;
        default-key    "rndc-key"; <= /etc/rndc.key ファイルで指定したkeyの名前を指定
};



Solaris# vi /etc/named.conf <= 「BIND」の設定ファイルの作成
options {
        directory "/var/named"; <= 設定ファイルのあるディレクトリを指定
        pid-file "/var/named/named.pid"; <= プロセスIDを格納するファイルを指定

        version "unknown"; <= バージョン情報を非表示

        allow-query{
                        127.0.0.1;
                        192.168.0.0/16; <= DNSサーバを利用するネットワークを指定
        };
        allow-recursion{
                        127.0.0.1;
                        192.168.0.0/16; <= DNSサーバをキャッシュサーバとして利用するネットワークを指定
        };
        allow-transfer{
                        127.0.0.1;
                        192.168.0.0/16; <= DNSサーバのゾーンデータの転送先のネットワークを指定
        };
        forwarders{
                        192.168.0.1; <= このDNSサーバで名前解決ができなかった場合の問合せ先を指定
        };
};

include "/etc/rndc.key"; <= インクルードする鍵を指定

controls {
        inet 127.0.0.1 allow { 127.0.0.1; } keys { rndc-key; };
             <= keys の後ろは /etc/rndc.key ファイルで指定したkeyの名前を指定
};

logging {
        category lame-servers { null; }; <= 逆引きのエラーログをとらない
};

view "internal" {
        match-clients { 192.168.0.0/16; 127.0.0.0/8; }; <= 許可するネットワーク
        recursion yes; <= 再帰検索を行う

        zone "." {
        type hint;
        file "named.root";
        };

zone "localhost" {
        type master;
        file "localhost.zone";
        };

zone "0.0.127.in-addr.arpa" {
        type master;
        file "localhost.rev";
        };

zone "crimson-snow.net" { <= 正引きゾーンファイル
        type master;
        file "crimson-snow.net.zone";
        allow-update { none; };
        };

zone "0.168.192.in-addr.arpa" { <= 逆引きゾーンファイル
        type master;
        file "0.168.192.in-addr.arpa";
        allow-update { none; };
        };
};

ディレクトリの作成

必要なディレクトリを作成します。

Solaris# mkdir /var/named
ゾーンファイルの作成

ルートゾーンの最新化

最新のルートゾーンの定義ファイルをダウンロードします。

Solaris# wget ftp://rs.internic.net/domain/named.root <= 最新の定義ファイルのダウンロード
Solaris# mv named.root /var/named/ <= 定義ファイルを移動

localhostのゾーンファイル作成

まず、localhostのゾーンファイルを作成します。

正引きゾーンファイル

ホスト名(ドメイン名)からIPアドレスを解決する為のファイルを作成します。

Solaris# vi /var/named/localhost.zone <= 正引きゾーンファイルの作成
$TTL    86400
@             IN      SOA   crimson-snow.net.  root.crimson-snow.net.(
                                2005071701      ; Serial
                                3600            ; Refresh
                                900             ; Retry
                                3600000         ; Expire
                                3600 )          ; Minimum
              IN      NS    crimson-snow.net.
localhost.    IN      A     127.0.0.1

逆引きゾーンファイル

IPアドレスからホスト名(ドメイン名)を解決する為のファイルを作成します。

Solaris# vi /var/named/localhost.rev <= 逆引きゾーンファイルの作成
$TTL    86400
@             IN      SOA   crimson-snow.net.  root.crimson-snow.net.(
                                2005071701      ; Serial
                                3600            ; Refresh
                                900             ; Retry
                                3600000         ; Expire
                                3600 )          ; Minimum
              IN      NS    crimson-snow.net.
1             IN      PTR   localhost.

LAN内の端末用のゾーンファイル作成

次に、LAN内の端末用のゾーンファイルを作成します。

正引きゾーンファイル

ホスト名(ドメイン名)からIPアドレスを解決する為のファイルを作成します。

Solaris# vi /var/named/crimson-snow.net.zone <= 正引きゾーンファイルの作成
$TTL    86400
@             IN      SOA   crimson-snow.net.  root.crimson-snow.net.(
                                2005071701      ; Serial
                                3600            ; Refresh
                                900             ; Retry
                                3600000         ; Expire
                                3600 )          ; Minimum
              IN      NS    crimson-snow.net.
              IN      MX 10 crimson-snow.net.
@             IN      A     192.168.0.2 <= サーバのIPアドレス
windows       IN      A     192.168.0.3 <= クライアントのIPアドレス
www           IN      CNAME @ <= http://www.crimson-snow.netでもアクセスできるようにする

逆引きゾーンファイル

IPアドレスからホスト名(ドメイン名)を解決する為のファイルを作成します。

Solaris# vi /var/named/0.168.192.in-addr.arpa <= 逆引きゾーンファイルの作成
$TTL    86400
@             IN      SOA   crimson-snow.net.  root.crimson-snow.net.(
                                2005071701      ; Serial
                                3600            ; Refresh
                                900             ; Retry
                                3600000         ; Expire
                                3600 )          ; Minimum
              IN      NS    crimson-snow.net.
2             IN      PTR   crimson-snow.net. <= サーバ名
3             IN      PTR   windows <= クライアント名

作成したディレクトリと設定ファイルのパーミッションとオーナーを変更します。
また、起動に必要なライブラリのシンボリックリンクをはります。

Solaris# chmod -R 700 /var/named <= パーミッションの変更
Solaris# chown -R named:named /var/named <= オーナーの変更
Solaris# ln -s /usr/sfw/lib/libcrypto.so.0.9.7 /usr/local/lib/
 <= ライブラリのシンボリックリンクをはる
DNSサーバの起動
Solaris# /usr/local/sbin/named -c /etc/named.conf -u named

DNSサーバの自動起動

Solarisを起動する際に自動的にDNSサーバも起動するようにします。

Solaris# vi /etc/init.d/named <= 起動スクリプトファイルの作成
#!/sbin/sh

PID=`/usr/bin/ps -aef | /usr/bin/awk '{print $1" "$2}' | /usr/bin/grep named | /usr/bin/awk '{print $2}'`

case "$1" in
'start')
        if [ -f /usr/local/sbin/named -a -f /etc/named.conf ]; then
                if [ $PID ]; then
                        echo "named has started"
                else
                        /usr/local/sbin/named -c /etc/named.conf -u named
                        echo "Running: named"
                fi
        fi
        ;;

'stop')
        if [ $PID ]; then
                kill -TERM $PID
                echo "Stopping: named"
        else
                echo "named has stopped"
        fi
        ;;

'restart')
        $0 stop
        sleep 3
        $0 start
        ;;

'status')
        if [ $PID ]; then
                echo "named starts"
        else
                echo "named stopped"
        fi
        ;;

*)
        echo "Usage: $0 { start | stop | restart | status }"
        exit 1
        ;;
esac

exit 0


Solaris# chmod 744 /etc/init.d/named <= 起動スクリプトに実行権限付加
Solaris# ln /etc/init.d/named /etc/rc2.d/S72named <= ランレベル2で起動する
Solaris# ln /etc/init.d/named /etc/rc3.d/S72named <= ランレベル3で起動する
Solaris# ln /etc/init.d/named /etc/rc0.d/K72named <= ランレベル0で停止する
参照するDNSサーバの変更

Solarisで参照するDNSサーバを変更する場合、以下のようにします。

Solaris# vi /etc/resolv.conf <= 設定ファイルの編集
nameserver xxx.xxx.xxx.xxx <= 元々参照していたDNSサーバ
↓
nameserver 192.168.0.2 <= サーバのIPアドレスを指定
▲ページのトップへ