◆ユーザとグループの作成
/usr/sbin/groupadd -g 53 named /usr/sbin/useradd -u 53 -d /var/named -g named named
◆ディレクトリ作成
# /var/run/named は named.pid ファイルが入る mkdir /var/run/named # /var/named は各種データファイルファイルが入る (named.conf は # /etc/named.conf に作る) mkdir /var/named mkdir /var/named/data chown named:named /var/run/named chown named:named /var/named chown named:named /var/named/data
◆正引き
/var/named/data/public.zone, /var/named/data/db.zone は仮に次のよ うに設定。 ドメイン名の末尾の「.」は必要(書き間違いではない)。
cd /var/named/data vi public.zone # 以下のように設定 ---------------------------------------------------------------------------- $TTL 86400 @ IN SOA dnsmail.mydomain.hoge.com. root.mydomain.hoge.com.( 2006051601 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS xxx.xxx.xxx.com. IN MX 10 xxx.xxx.xxx.com. @ IN A XXX.YYY.ZZZ.160 dnsmail IN A XXX.YYY.ZZZ.160 www IN A XXX.YYY.ZZZ.167 hohoge IN A AAA.BBB.CCC.10 ---------------------------------------------------------------------------- cp public.zone db.zone
◆逆引き
/var/named/data/public.rev, /var/named/data/dbrev.rev は仮に次のように設定
cd /var/named/data vi public.rev # 以下のように設定 ---------------------------------------------------------------------------- $TTL 86400 @ IN SOA dnsmail.mydomain.hoge.com. root.mydomain.hoge.com.( 2006051601 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS mydomain.hoge.com. 160 IN PTR xxx.xxx.xxx.com. 167 IN PTR www.xxx.xxx.com. ---------------------------------------------------------------------------- cp public.rev dbrev.rev
◆チェック
ネットワーク関係の設定ミス, named 等のインストールのミス, public.zone, public.rev の書き間違いを下記の手順でチェックする。
この手順で、仮の DNS サーバが立ち上がることになります。この仮の DNS サー バは、public.zone, public.rev は使うが、db.zone, dbrev.rev は使っていないと いうことに留意しておく
- /etc/resolv.conf のチェック
cat /etc/resolv.conf で、今設定を行なっているマシンの IP アドレスが、 「nameserver」の行に、正しく記述されていることを確認.
cat /etc/resolv.conf
- /etc/named.conf
vi /etc/named.conf # 仮に、次のようなファイルを作る ---------------------------------------------------------------------------- options { directory "/var/named"; pid-file "/var/run/named/named.pid"; }; // mydomain.hoge.com <-> XXX.YYY.ZZZ zone "mydomain.hoge.com" IN { type master; file "data/public.zone"; allow-query { any; }; }; zone "ZZZ.YYY.XXX.in-addr.arpa" IN { type master; file "data/public.rev"; allow-query { any; }; }; - チェックツールを使って、named.conf ファイルの内容をチェック
エラーが出たら、named.conf を書き直す。
/usr/local/sbin/named-checkconf /etc/named.conf
- チェックツールで, public.zone, public.rev をチェック
エラーが出たら、public.zone, public.rev を書き直す。
/usr/local/sbin/named-checkzone localhost /var/named/data/public.zone /usr/local/sbin/named-checkzone 127.0.0.1 /var/named/data/public.rev /usr/local/sbin/named-checkzone dnsmail /var/named/data/public.zone /usr/local/sbin/named-checkzone XXX.YYY.ZZZ.160 /var/named/data/public.rev /usr/local/sbin/named-checkzone www /var/named/data/public.zone /usr/local/sbin/named-checkzone XXX.YYY.ZZZ.167 /var/named/data/public.rev
- DNS サーバの起動の試み
DNS サーバ起動時にエラーが出たら、関係する設定ファイル (ここでは、named.conf, public.zone, public.rev) を見直すとともに、「cat /var/adm/messages | grep named 」で エラーメッセージを確認
pkill named /usr/sbin/named -u named -c /etc/named.conf -d 1 cat /var/adm/messages | grep named
◆named.confの設定とチェック
named.conf の設定上の留意事項
・設定ファイル /etc/named.conf の注意事項
- options 内の記述
options 行は複数書けない書けないことに注意. - 「directory "/var/named";」
- 「version "unknown";」 bind のバージョンの非表示
- allow-recursion: 外部からの recursive query を抑止するように設定.
- allow-transfer: 外部からのゾーンリクエストパケット(DNS が管理し
ているサーバの一覧の取得)を抑止するうううううように設定。
named.conf ファイルの options 設定の中で
options { (他の設定) allow-recursion { 127.0.0.1; XXX.YYY.ZZZ.0/24; }; (他の設定) };のように設定する. 外部からのrecursive query が抑止され、自分が提供しているドメイン、およ び既に キャッシュされている情報以外は返さないようになる. つまり、組織の外から「組織の外を検索するような要求」が来 たときに、recursive query の実行を抑止する。 なお、組織の内を検索するような要求に対しては recursive query は関係な い。
- forwarders: フォーワード先 (ルータが代理 DNS サーバの機能を持つと
きはそれを書く. あるいは、上流の DNS サーバの IP アドレスを書く)
- view "internal" で、内部向きのゾーンファイル配布を定め、 view "external" で、外部向きのゾーンファイル配布を定める。
- ZONE "." : キャッシュサーバ用の設定
・named.conf を次のように設定する
cd /etc
vi named.conf
# 以下のように設定
# XXX.YYY.ZZZ, ZZZ.YYY.XXX -> DNSサーバ兼MXがある「内部」のネットワークアドレスのこと
# AAA.BBB.CCC -> 上流の DNS サーバがあるネットワークアドレスのこと
# mydomain.hoge.com -> DNS ドメイン名のこと
----------------------------------------------------------------------------
//
// named.conf
//
options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
pid-file "/var/run/named/named.pid";
version "unknown";
allow-recursion {
127.0.0.1;
AAA.BBB.CCC.10/24;
};
allow-transfer {
127.0.0.1;
AAA.BBB.CCC.10/24;
};
forwarders {
AAA.BBB.CCC.10;
};
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};
//
// a caching only nameserver config
//
controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
// logging
logging {
channel namedlog {
file "data/named.log";
print-time yes;
print-category yes;
print-severity yes;
severity info;
};
channel securitylog {
file "data/security.log";
print-time yes;
};
category default {
default_syslog;
namedlog;
default_debug;
};
category security {
default_syslog;
securitylog;
};
};
view "internal" {
match-clients {
XXX.YYY.ZZZ.0/24;
127.0.0.1;
};
// mydomain.hoge.com <-> XXX.YYY.ZZZ
zone "mydomain.hoge.com" IN {
type master;
file "data/db.zone";
allow-update { none; };
};
zone "ZZZ.YYY.XXX.in-addr.arpa" IN {
type master;
file "data/dbrev.rev";
allow-update { none; };
};
include "/etc/rndc.key";
};
view "external" {
match-clients {
any;
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localdomain" IN {
type master;
file "localdomain.zone";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.ip6.local";
allow-update { none; };
};
zone "255.in-addr.arpa" IN {
type master;
file "named.broadcast";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.zero";
allow-update { none; };
};
// mydomain.hoge.com <-> XXX.YYY.ZZZ
zone "mydomain.hoge.com" IN {
type master;
file "data/public.zone";
allow-query { any; };
};
zone "ZZZ.YYY.XXX.in-addr.arpa" IN {
type master;
file "data/public.rev";
allow-query { any; };
};
include "/etc/rndc.key";
};
----------------------------------------------------------------------------
・チェックツールを使って、named.conf ファイルの内容をチェック
エラーが出たら、named.conf を書き直す。
/usr/local/sbin/named-checkconf /etc/named.conf
・チェックツールで, db.zone, dbrev.rev をチェックpublic.zone, public.rev のチェックは済んでいるので、 db.zone, dbrev.rev のチェックを念のた めに行なう。 エラーが出たら、db.zone, dbrev.rev を書き直す。
/usr/local/sbin/named-checkzone localhost /var/named/data/db.zone
/usr/local/sbin/named-checkzone 127.0.0.1 /var/named/data/dbrev.rev
/usr/local/sbin/named-checkzone dnsmail /var/named/data/db.zone
/usr/local/sbin/named-checkzone XXX.YYY.ZZZ.160 /var/named/data/dbrev.rev
/usr/local/sbin/named-checkzone www /var/named/data/db.zone
/usr/local/sbin/named-checkzone XXX.YYY.ZZZ.167 /var/named/data/dbrev.rev
・named.cache, localhost.zone, localhost.rev の設定
・起動チェック
起動チェックのために、最初は、デバッグモードで起動してみる. (起動の前に named の停止を行ないます).
pkill named
/usr/sbin/named -u named -c /etc/named.conf -d 1
cat /var/adm/messages | grep named cat /var/named/data/named.log
「cat /var/named/data/named.log」の結果ログが出てきますので、エラー が出ていないことを確認する。
・rndc との通信ができていることのチェック
rndc status # エラーが無く、「server is up and running」という行が出てくることを確認
・/etc/hosts.allow の設定
TCP wrapper の設定ファイルである /etc/hosts.allow を確認します。
53/UDP は通常の名前解決に使われ、53/TCP はゾーン転送(プライマリ、セカ ンダリ間)に
のみ使われます。
53/TCP のアクセス のアクセスは、XXX.YYY.ZZZ.* のみを許すように設定します。
例えば、次のように設定します。
(ネットワークアドレスの末尾に付ける「.」は忘れないようにしましょう)。
named: 127.0.0.1
named: XXX.YYY.ZZZ.
