Custom Search

JITAKU_SVR_Wiki



BIND9

ソース、パッケージからのインストールでは、基本的にはバージョン:bind-9.6.1-P1

named.confの概要
named.confが出来上がらないので自分で作成するかサンプルを使用する。
サンプルはパッケージでインストールしたときに
/usr/share/doc/bind-xxx/sample/etc/named.conf
ここに用意されている。
今回はバージョン「bind-9.3.6-4.P1.el5_4.2」のパッケージを元に説明。

zoneについては↓
bind_zone

optionsステートメント

main.confを見ると、先頭にoptions行があることが分かる。
この行には、
・zoneファイルへのパス
・pidファイルのパス
・trustネットワーク
・バージョンの非表示
・ポートの明示
などを記述する。

例)

options
{
       directory               "/var/lib/named";
       pid-file                "/var/run/named.pid";
       dump-file               "data/cache_dump.db";
       statistics-file         "data/named_stats.txt";
       memstatistics-file      "data/named_mem_stats.txt";
       allow-transfer{ 192.168.0.1; 192.168.10.1; 10.10.10.1; };
       version "none";
       allow-recursion { TRUST; };
       allow-query-cache { TRUST; };
}

記述のないものは基本的にすべてデフォルトの値が適応される(ポート番号など)。

最後の2行はアクセスリストの設定。

TIPS:
directory
=>zoneファイルのあるディレクトリパス

pid-file
=>pidファイルの作られるパスとpidファイル名

dump-file
=>namedがキャッシュいるデータのdump先ファイルを指定

statistics-file
=>statsで統計情報を出力するファイル名を記述

allow-recursion
=>キャッシュサーバの不正利用対策

allow-query-cache
=>キャシュした情報をどのアドレス範囲に提供するか

allow-query-cache
=>
デフォルト値→{ localnets; localhost; };
ただし、設定されていなければ、"allow-recursion"の設定が適用される。
"allow-recursion"が設定されていなければ、"allow-query"の設定が適用される。
"allow-query"も設定されていなければ、デフォルト値が適用される。

allow-recursion
=>
デフォルト値→{ localnets; localhost; };
ただし、設定されていなければ、"allow-query-cache"の設定が適用される。
"allow-query-cache"が設定されていなければ、"allow-query"の設定が適用される。
"allow-query"も設定されていなければ、デフォルト値が適用される。

allow-query
=>dnsクエリを許可するパターンの指定。
デフォルト値→{ any; };
パターン 範囲
any すべてのホスト
none なし
localhost 自ホスト
localnet 自ホストが所属しているネットワーク
a.b.c.d[/m] IPアドレスとネットマスクによる指定


loggingステートメント

loggingステートメントを記述しておくことでネームサーバのログ出力をより広範に制御することができるようになる。
channelで出力先を選択し、categoryで出力フォーマットとseverity(重要度)を指示していいる。
以下がサンプルのデフォルト

logging {
        channel queries-log {
                file "/var/log/named/queries.log" versions 3 size 10m;
                severity info;
                print-time yes;
                print-severity yes;
                print-category yes;
        };

        channel "named-log" {
                file "/var/log/named/named.log" versions 5 size 2m;
                severity warning;
        };

        category queries { queries-log; };
        category default { named-log; };
};

TIPS:
file~~以降のversion 3 size 10m; はログのローテーション、世代管理を意味している。
上記例だと、1ファイル10MBで、世代は3つ残す。

詳細は以下のリンクにて。
http://www.atmarkit.co.jp/flinux/rensai/bind910/bind910a.html
http://linux.kororo.jp/cont/server/bind_log.php

ログローテート

ログの出力先の設定は出来るが、圧縮したり日付で管理するようなものはない(と思う)。
自分でスクリプトを作成したほうが楽だったので、以下で紹介。

アクセスリストステートメント

options行の最後に許可(拒否)するネットワークを限定したい場合は、以下の様に記述する。

acl TRUST {
     10.0.0.0/8;
     192.168.0.0/24;
     127.0.0.1;
};

aclを使用することで、上記以外からのdnsクエリを拒否することが出来る。

controlsステートメント

ローカルホストからrndcを接続できるようにするために必要。
後述するが、以下の様に記述する。

controls {
 inet 127.0.0.1 port 953
 allow { 127.0.0.1; } keys { "rndc-key"; };
};

keyステートメント

rndckeyとは、ローカルホスト又はリモートホストからのnamedデーモンのコマンドライン管理ができるようになる。
rndc-keyを使用する場合、以下を記述する。

key "rndc-key" {
      algorithm hmac-md5;
      secret "xxxx";
};

rndckeyの作成方法

# rndc-confgen -a -t /etc -b 512 -k rndc-key

-a 鍵を生成し、/etc/rndc-keyに書き込む

-b bits 暗号鍵の長さをビットで指定する。指定しない場合は128bitで生成される

-k keyname 生成されるキーファイルの名前を指定することができる

-t ディレクトリを指定する

実例

# mkdir /etc/named
(rndc-key専用のディレクトリを作成)

# rndc-confgen -a -t /etc/named.d -b 512 -k /etc/named/rndc-key

wrote key file "/etc/rndc-key" rndc-confgen: unable to create "/etc/named/etc/rndc-key"

エラーがでる。
どうやらchroot用のキーを作っているらしい。

# mkdir etc

# rndc-confgen -a -t /etc/named.d -b 512 -k rndc-key
wrote key file "/etc/rndc-key"
wrote key file "/etc/named.d/etc/rndc-key"

rndc-keyの確認

# ls -la /etc/rndc-key

-rw------- 1 root root 141 Jan 27 15:43 /etc/rndc-key

# ls -la /etc/named.d/etc/rndc-key

-rw------- 1 root root 141 Jan 27 15:43 /etc/named.d/etc/rndc-key

出来上がった二つのキーはハードリンクされている様で、この場所固定(?)みたいなのでそのままで使用した。

# cat /etc/rndc-key
key "rndc-key" {
	algorithm hmac-md5;
	secret  "PR8Fot9mf5iLZinIcXmkY3FMzCeQ8Ii3zm7uz0yMNwXQgfvx7DWhv7Dkc91C+oUNSqeJqRlzmgZKPdDaO29p7Q==";
};

当然ハードリンクされているので、中身は一緒。

# diff /etc/rndc-key /etc/named.d/etc/rndc-key

#

named.confへの記述は

0named.conf0
controls {
 inet 127.0.0.1 port 953
 allow { 127.0.0.1; } keys { "rndc-key"; };
};

include "/etc/named.d/etc/rndc-key";  //chroot先に出来上がったキーを指定。

TIPS:
rndc.confは/etcに設置したころについては今のところ問題はないが、時間がある時に調査。

chrootについて

現在動いているnamedを確認し、chrootを使用しているか否かを確認する。

# プロセスを確認する。

# ps -ef | grep named
named 20628 1 0 23:08 ? 00:00:00 /usr/sbin/named -u named -4 -t /var/named/chroot
オプションに-tがある場合はchrootを使用している。
使用したくない場合は、/etc/sysconfig/namedのROOTDIRをコメントアウト?(未検証)

chrootを使用した場合のパス
/etc/sysconfig/namedのROOTDIRを確認する。
デフォルトだと、/var/named/chrootとなっているはず。
これは、/var/named/chroot配下にあるファイルが有効になるので、
実際のnamed.confがある場所は、

# ls /var/named/chroot/etc/named.conf /var/named/chroot/etc/named.conf
となり、
zoneファイルは、

# ls /var/named/chroot/var/named/localhost.zone /var/named/chroot/var/named/localhost.zone
と、いうことになる。

secondaryサーバの設定

secondaryサーバで実施することは基本的にnamed.confを修正することだけ。
マスターがどこにあり、なんと言う名前のファイルを転送するかを指定する。

named.confの編集(zone部分)

zone "hogehoge-japan.jp" in {
       file "slave/hogehoge-japan.jp";
       type slave;
       masters { 10.10.10.1; };
};

スレーブサーバなので、typeはslave。
マスターになるサーバのIPアドレスを指定。

以上が出来上がったら、マスター同様、named.confのチェック。

# named-checkconf /etc/named.conf
エラーが表示されなければ、bindの再起動。

chroot環境であれば、

# named-checkconf -t /var/named/chroot /etc/named.conf

その他

http://vori-misc.blogspot.com/2008/02/bind9-from-bind941-p1.html
http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/ja/ref-guide/s1-bind-rndc.html
http://www.skymerica.com/blog/yotsumoto/arch/2007/08/17/000866.html
http://techtarget.itmedia.co.jp/tt/news/0904/09/news01.html
http://www.kozupon.com/bind/ndc_key.html
http://tomo.ac/goodstream/server/dns/bind/tips/rndc.html
http://linux.kororo.jp/cont/server/bind_log.php
http://www.atmarkit.co.jp/flinux/rensai/bind910/bind910a.html

2011-01-27


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-12-22 (火) 14:18:07 (697d)