ChallengedServiceのバナー
 
DNSサーバー(Domain Name System)
 

server.phoenix-jp.info
ホスト名またはコンピュータ端末名ドメイン名
コンピュータ名からドメイン名までを記述する形式をFQDN(完全修飾ドメイン)(FullyQualifiedDomainName)という。
正引きは、名前をIPアドレスに変換することを言う。(名前解決)
逆引きは、IPアドレスからホスト名に変換することを言う。
どちらもDNSサーパーが行う。
通常DNSサーバーは二台用意しておく必要がある。一台が停止してももう一台で引き続き名前解決できるようにするためである。
一台に設定したゾーンデータベースをもう一台がコピーして使用する。
ゾーンデータベースを設定するほうをマスターサーパーまたはくらいばかりプライマリーサーパー、ゾーンデータベースをコピーして使う方をスレーブサーパーまたはセカンダリーサーパーと呼ぶ。
通常DNSサーバーは外部からの問い合わせを受けるが、キャッシングサーバーは外部に問い合わせにいくDNSサーバーである。一般的にプライマリDNSサーバーはキャッシングサーパーとして動作させている。

私の場合Linuxをインストールする時にサーバー関係をすべて入れているためすでにBIND9がインストールされている。
BINDのディレクトリ構成は以下の通りである。

/etc/rc.d/init.d/named  namedを制御するためのスクリプト
/etc/named.conf  BINDの設定ファイル。起動時にこのファイルを読み込み動作や自分が管理するゾーンを決定する。
/usr/sbin/named  BINDの中心プログラム。起動後デーモンとして常駐し名前解決の問い合わせを処理する。
/var/named/ゾーンデータベースファイル  ゾーンの数だけ必要である。
/var/log/messages  BINDの起動ログが記録されている。トラブル発生時などにここに記録されているログを参照する。

named.confはインストール時にすでにキャッシングサーバーとして動作するよう設定が記述されている。
viエディターで開く。
include"/etc/rndc.key"; この行の下に設定を追加していく。
zoneステートメントによって管理するゾーンを追加する。

zone"ゾーン名" IN {
  type master;
  file "ファイル名";
  allow-update { none; };
};
zoneステートメントにて管理するゾーン名を指定する。
typeステートメントはマスターサーバーとして機能させる。
fileステートメントはゾーンデータベースのファイル名を記入。
allow-updateステートメントはネットワーク経由で更新されないためにnoneと記入。
最後に;が必要。

ちなみに以下が私のnamed.confファイルである。

// generated by named-bootconf.pl

acl localnet {
192.168.1.0/24;
127.0.0.1;
};

options {
directory "/var/named";
auth-nxdomain yes;
allow-transfer { localnet; };
allow-query { localnet; };
// allow-recursion{;};
/*
* 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; };
};

view "inside"{
match-clients { localnet; };
recursion yes;

zone "." IN {
type hint;
file "named.ca";
};


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

zone "phoenix-jp.info" IN {
type master;
file "named.hosts";
allow-update { none; };
};

zone "1.168.192.in-addr.arpa" IN {
type master;
file "named.rev";
allow-update { none; };
};
};

 

view "outside"{
match-clients { any; };
allow-query { any; };
recursion no;


zone "phoenix-jp.info" IN {
type master;
file "out_named.hosts";
allow-transfer { localnet; };
allow-query { any; };
notify yes;
allow-update { none; };
};
};

include "/etc/rndc.key";

BINDのバージョン情報をunknownに変更する
named.confファイルのoptionsに以下を追加する。
options {
     …… 省略 ……
     version "unknown";
};


[root@server root]# /usr/sbin/named-checkconf /etc/named.conf で文法チェック

aclステートメント(access control statement)

ゾーンデータベースのファイル
以下は私のゾーンデータベースファイルである。

localhost.rev

$TTL 86400
@ IN SOA server.phoenix-jp.info. root.phoenix-jp.info.(
2003102101
28800
14400
3600000
86400)
IN NS server.phoenix-jp.info.
1 IN PTR localhost.

named.hosts
$TTL 86400
@ IN SOA server.phoenix-jp.info. root.phoenix-jp.info.(
2003102101
2H
1H
1W
86400)

IN NS server.phoenix-jp.info.

phoenix-jp.info. IN MX 10 mail.phoenix-jp.info.

router IN A 192.168.1.1
localhost IN A 127.0.0.1
xx IN A 192.168.1.12
server IN A 192.168.1.3
www IN A 192.168.1.3
ftp IN A 192.168.1.3
mail IN A 192.168.1.3


named.rev
$TTL 86400
@ IN SOA server.phoenix-jp.info. root.phoenix-jp.info.(
2003102101
2H
1H
1W
86400)

IN NS server.phoenix-jp.info.

1 IN PTR router.phoenix-jp.info.
3 IN PTR server.phoenix-jp.info.
12 IN PTR xx.phoenix-jp.info.


out_named.hosts
$TTL 86400
@ IN SOA server.phoenix-jp.info. root.phoenix-jp.info.(
2003102101
2H
1H
1W
86400)

IN NS server.phoenix-jp.info.

phoenix-jp.info. IN MX 10 mail.phoenix-jp.info.

router IN A 192.168.1.1
server IN A 192.168.1.3
www IN A 192.168.1.3
ftp IN A 192.168.1.3
mail IN A 192.168.1.3

[root@server root]# /usr/sbin/named-checkzone  /var/named/zone名 で文法チェック

$TTL(TimeToLive) データの有効期限で具体的にはキャッシュされる時間になる。通常86400秒(一日)に設定する。

SOA(Start Of Authority)ゾーンデータベースの最初に記述するレコード
@ IN SOA server.phoenix-jp.info. root.phoenix-jp.info.(
server.phoenix-jp.info. サーバーホスト名
root.phoenix-jp.info. 管理者メールアドレス
.を最後に記述する必要がある

2003102101  ゾーンデータベースのシリアル番号。更新するごとに最後の数字を一つ増やす。
2H  スレーブサーバーがゾーンデータベースの更新を確認する頻度
1H  スレーブサーバーがデータの更新のためのアクセスに失敗した場合でトライする間隔
1W  スレーブサーバーの保持している転送したゾーンデータベースの有効期限。ここで設定した期限が過ぎたゾーンデータベースは無効となる
86400  このゾーンデータをどの程度キャッシュさせておくか設定するパラメーター。あまり短いと頻繁に問い合わせを受けることになる。

NS(Name Service)レコード
ゾーンを管理するDNSサーバーの一覧を記述する
IN NS server.phoenix-jp.info.
IN NS スレーブDNSサーバーのホスト名
IN NSの前に設定対象が空白になっているが直前の設定対象が引き継がれるので以下の記述と同様とみなされる。
phoenix-jp.info.  IN NS server.phoenix-jp.info.
phoenix-jp.info.  IN NS スレーブDNSサーバーのホスト名

MX(Mail Exchange)レコード
メールの配送先を設定
IN MX 10 mail.phoenix-jp.info.
IN MXの前の設定対象が省略されているが上記と同様に以下のようにみなされる
phoenix-jp.info. IN MX 10 mail.phoenix-jp.info.
***@phoenix-jp.info宛てのメールはmail.phoenix-jp.infoに配送される
クライアントPCから見たメールサーバー名はmail.phoenix-jp.infoとなる
10という数字は配送する優先度で整数であれば何でも良い。数値が小さいほど優先度が高くなる
IN MX 10 mail.phoenix-jp.info.のメールサーバー名を任意に変更してもよい。たとえば以下のようにする。
IN MX 10 server この場合 IN MX 10 server.phoenix-jp.info.と同様になる。
この場合クライアントPCから見たメールサーバー名はserver.phoenix-jp.infoとなる
mailやserverのように最後がピリオドで終わってない名前は自動的に【.phoenix-jp.info.】を補完した上で処理される

A(Address)レコード
ホスト名に対応したIPアドレスを設定する
名前解決が必要なホストにはすべてAレコードを記述する必要がある
server IN A 192.168.1.3
www IN A 192.168.1.3
ftp IN A 192.168.1.3
mail IN A 192.168.1.3

CNAME(Canonical Name)レコード
別名をつけるためのレコード
www  IN CNAME server
私の設定ではserver.phoenix-jp.infoにwww.phoenix-jp.infoという別名をつけてみる。
www.phoenix-jp.infoにアクセスすると実際はserver.phoenix-jp.infoにアクセスしたことになる。

以上は正引きゾーンの設定であったので、以下は逆引きゾーンを設定する

PTR(Pointer)レコード
IPアドレスからホスト名へ変換するためのレコード
$TTL SOAレコード NSレコードは正引きゾーンの設定と同様である

BINDで実際に名前解決を行うのは、namedと言ううデーモン。
常に常に実行状態で、要求があればそれに応じた処理をするプログラム。
BINDではnamedがメモリに常駐し名前解決の問い合わせの処理を行う。
【/etc/rc.d/init.dディレクトリにはmサービス制御スクリプトがある。この中にあるnamedというプログラムはBINDの実態であるnamedデーモンの制御を行うことができるプログラムである。】
# /etc/rc.d/init.d/named start によりnamedが起動する。設定ファイルやゾーンデータベースを変更した場合はreloadで設定を反映させる。
Linuxサーバー起動時namedを自動起動させるためには以下のコマンドを実行
# chkconfig named on (offて自動起動の解除)

Linuxが問い合わせに利用するDNSサーバーの一覧は、/etc/resolv.confファイルに設定されている。通常BINDはキャッシングサーパーとして稼働しているので、他のDNSサーバーに問い合わせにいかなくても、自サーバー上で名前解決ができる。そこで、問い合わせに利用するDNSサーバを自分自身に変更する。
/etc/resolv.confファイルをviエディタで開き以下のように変更する
nameserver 192.168.1.3
これにより自分のサーパーのDNSサーバで名前解決ができる。

一番最後になってしまったが、グローバルIP1個でBINDを編集する場合はBIND設定ツールが使えないので手編集で行わなければならない。
グローバルIP8個以上の場合、BIND設定ツールが使えるが手編集とBIND設定ツール両方を同時に使うことができないのでどちらかに統一する。
上記のnamed.confファイルを見てもらえればわかるが、BIND9からはviewステートメントで内向きと外向き両方を設定することが可能である。

《戻る》《TOP》