Edit
BINDの設定

BINDとは、インターネットのアドレスを管理するソフトです。いわゆる「www.yahoo.com」などのインターネットの名前解決をするためにインストールされるものです。一般の家庭ではすでにインターネットプロバンダーがこのソフトを稼動させており、ユーザーはDNSアドレスというのを設定するだけで、すでに恩恵を受けられるので、多くの場合必要ではありません。ちなみに、BINDは一番ポピュラーなinternetの名前解決のソフトです。BINDは現在ISCという組織がその管理を引きついでいます。

インターネットのドメインを管理する、名前解決サーバーは通常、BINDといわれるサーバーソフトウェアで管理されています。これはインターネット初期の頃からのソフトであり、IP6などにも対応している歴史と権威のあるソフトですが、設定が難しくまた頻繁に設定されるものではないので、敬遠される事もあるようです。
BIND のOfficial Site、(マニュアルはここ

Edit
BINDのインストールと起動(yumを利用)

さてBIND9のインストールについてです。
BINDインストールは以下のコマンドで実行します。

# yum install bind-libs bind-utils bind caching-nameserver

これで、BINDがインストールされ、サンプルの設定ファイルも設置されました。ちなみに、BINDを起動させたい場合には以下のコマンドになります。

Edit
ソースを利用して最新版をインストール

# wget http://ftp.isc.org/isc/bind9/9.5.0-P2/bind-9.5.0-P2.tar.gz
# tar zxvf bind-9.5.0-P2.tar.gz
# cd bind-9.5.0-P2
# ./configure
# make
# make install

Edit
作成された named を所定の位置に移動

# rm /usr/sbin/named
# ln -s /usr/local/sbin/named /usr/sbin/named

Edit
rndc用にキーデータを作成します。

# cd /etc/named
# dnssec-keygen -a hmac-md5 -b 128 -n user rndc

これを実行すると、???.privateと???.keyの2つのファイルが作成されます。

Edit
chroot機能の導入

chrootを利用すると、namedにバグがあってセキュリティレベルが落ちたときに、より堅牢なシステムとして稼働させられます。詳細は、ここのページをご覧ください。 chrootを利用すると、追加の設定ファイルが読めなくなるので、今回は利用しません。

Edit
namedユーザー等の作成

yumでインストールしてある場合には、作成されていますが、/etc/passwdにnamedのユーザーがなめれば、namedユーザーの作成を行います。

# cd /usr/local
# groupadd named
# useradd -g named -d /usr/local/named -s /bin/false named
# chown named:named named
# chmod 600 named

(ユーザー作成では、ダミーシェルを指定することでセキュリティアップ)

Edit
自動起動の設定

ただソースからの場合、自動起動などの設定を行うchkconfigにnamedがサービスとして登録されていません。/etc/rc.d/init.d/namedという、サービスコマンドを設定する必要があるので、ソースからコンパイルしたい場合でも、上記のyumで一度、インストールしておくと一緒にサービスも登録してくれるので、便利です。

# chkconfig --add named
# chkconfig --list | grep name   (これで登録の有無を確認できます)
# chkconfig named on  (これで自動起動します)

ちなみに、namedのユーザーとグループの追加も行う必要がありますが、yumをするとこれもインストールしてくれるので、大変便利です。

【起動コマンド】

# service named start

【設定ファイル変更した場合の再起動】

# service named reload


Edit
設定ファイルについて

Edit
ブート時の引数設定ファイル

/etc/sysconfig/named ファイルは、ブート時に引数を named デーモンに渡すのに使用されます。設定できる内容は以下の通り。

Edit
Serviceコマンド時のシェルコマンド

Linuxでは、sysconfig などを利用してサービスや起動時のサービスレベルの登録などを行います。その際には、/etc/rc.d/init.d/named にそのシェルスクリプトを登録します。

Edit
BINDでは大きくわけて、以下の設定ファイルがあります。

/etc/named.conf   基本設定ファイル。他のファイルの場所なども設定されます。
/var/named/localhost.zone              <- localhost用正引き
/var/named/localhost.rev               <- localhost用逆引き
/var/named/sampledomain.com.zone       <- domain用正引き(for Inside)
/var/named/sampledomain.com.rev        <- domain用正引き(for Inside)
/var/named/sampledomain.com            <- domain用正引き
/var/run/named/named.pid               <- Process IDの保管

※/var/named/の位置を/usr/local/namedなどに設定ファイルを変更しても、SELinuxの関係なのか権限エラーがでて起動しません。
※bind9では、DDNSでの更新時、ゾーンファイルをすぐに書き直すのではなく、一度、ジャーナルファイルとして.jnl ファイルに蓄えます。もし.zone .jnl との整合性がずれたら、ジャーナルファイルと削除してください。

Edit
named.confのテクニック

特定のドメイン名だけを他のDNSに解決して貰いたい場合には以下の設定を追加する。

zone "intra.mydomain.com" {
  type forward;
  forwarders { ns.intra.mydomain.com; };
};
zone "194.210.220.in-addr.arpa" {
    type forward;
    forward only;
    forwarders { 220.210.194.67; 220.210.194.68; };
};

これで *.intra.mydomain.comのIP番号の解決をns.intra.mydomain.comに任せることができる。受け手のクエリ要求の許可は/etc/named.confでallowディレクティブにネットワークアドレスを加える。(逆引きのIPは自分の環境に合わせること)

Edit
named.ca(named.root)ファイルの最新版の取得

# cd /var/named
# wget ftp://ftp.rs.internic.net/domain/named.root
# cp named.root named.ca

Edit
Proxy情報の配布

Proxyは情報を渡すためのファイルをwebサーバに置く必要があるので、注意が必要。

# vi /etc/dhcpd.conf
 authoritative;
 option wpad code 252 = string;
 option wpad "http://www.gamvaro.com/proxy.pac"

その後、WEBサーバーのhtdocs直下に、上記で指定したproxy.pacを設置する。

# vi /usr/local/apache2/www/htdocs/proxy.pac
 function FindProxyForURL(url, host) {
   if (localHostOrDomainIs(host, "localhost") ||
      isInNet(host, "10.0.0.0", "255.0.0.0") ||
      isInNet(host, "127.0.0.0", "255.0.0.0") ||
      isInNet(host, "172.16.0.0", "255.240.0.0") ||
      isInNet(host, "192.168.0.0", "255.255.0.0")
      ) {
     return "DIRECT";
   } else {
   return "PROXY proxy.gamvaro.com:3128";
   }
 }

最後のreturn行に記載されている情報がProxyサーバの情報となる。ポート番号はsquid等のproxyサーバで設定したもの。またIEのバグでproxy.pacをproxy.paで認識するものがあるらしいので、作成したproxy.pacのリンクを作成しておく。

# ln -s proxy.pac proxy.ca

Edit
ファイルのパーミッションについて

BINDは非常にエラーに対して不親切なプログラムの為、よく設定ファイルの内容よりも、ファイルのパーミッション設定で問題が発生する。正直、こんな不親切なプログラムで正しく動いているのかと心配になるが、DDNSに対応しているDNSサーバーが無いので、やむをえない。早速だが以下の設定を見直す必要がある。

PIDファイルを入れておくフォルダ
chmod 777 /var/run/named
chown named:named /var/run/named
設定ファイルを入れておくフォルダ及びファイル
chmod 777 /usr/local/named/*
chown named:named /usr/local/named/*

Edit
DNSの設定状況を確認する。

DNS Report Site
現在のDNSの状態を確認するサイトがあります。このサイトを利用すると指定したドメインの設定状況をWEBで確認できるので、設定したBINDが正しく動作しているか、確認が容易になります。

プロセスが起動しているか確認
# /etc/init.d/named status
設定したマシンから設定状況を確認するとき
# dig @127.0.0.1 domainname soa

Edit
Nslookupを利用したチェック

NSLOOKUPを利用してAレコードなどの設定情報を確認します。

# nslookup check-domain.com. ns1.name-server.com.

Edit
Whoisで登録者の内容を確認する。

Internet上で登録されているドメインの情報を確認するためには、以下のサイトが便利であろう。
http://whois.prove-wsc.com/

.comなどのアドレスへのアクセスであれば、Internic.netが管理をしている。

Edit
サーバー自身の名前解決の設定

# emacs /etc/resolv.conf
  nameserver localhost 192.168.0.1
  search localdomain

これで最初に自分自身のサーバーを参照し、なければルーターに参照しにいく。

Edit
iptablesの穴あけ

セキュリティのページを参照してください。そこですでに53番の解放を設定してあります。

Edit
DNSのチェック

namedの設定を行ったら、正しく設定されているか確認します。

Edit
標準のテスト

Edit
named.conf のチェック

まずは一番重要なnamed.confの設定ファイルのチェックを行います。

# named-checkconf /etc/named.conf

これで特にエラーが出なければOKです。

Edit
Zone のチェック

次は自分で設定したゾーンファイルのチェックを行います。

# named-checkzone mydomain.com /var/named/mydomain.com.zone
  zone mydomain.com/IN: loaded serial 2003111103
  OK

これで簡単なゾーンチェックが行えます。2つの引数は適切なゾーンファイル名の絶対パスを指定してくだい。上記のようにOKと出れば大丈夫です。

Edit
詳細チェック

上記のツールでも動作が確認できないときは、以下のツールも便利です。

Edit
Dnswalkのインストール

# cd /usr/local/src
# wget http://nchc.dl.sourceforge.net/sourceforge/dnswalk/dnswalk-2.0.2.tar.gz
# mkdir dnswalk-2.0.2
# cd dnswalk-2.0.2
# tar -zxvf ../dnswalk-2.0.2.tar.gz
# emacs dnswalk
  #!/usr/contrib/bin/perl  <-この先頭行を自分のパールの実行ファイルの位置に変更

Edit
Net::DNSモジュールをインストール

# wget http://www.cpan.org/modules/by-module/Net/Net-DNS-0.63.tar.gz
# tar -zxvf Net-DNS-0.63.tar.gz
# cd Net-DNS-0.63
# perl Makefile.PL               <- y と応えます。
# make
# make install

Edit
早速、上記ツールでのチェック

# cd /usr/local/src/dnswalk-2.0.2
# ./dnswalk mydomain.com.

※必ずドメイン名に「.」を付けます。

Edit
DDNSに関して便利なコマンド

多くのDNSサービス業者で、DDNSを提供している場合、コマンドからあるアドレスにアクセスすることで、IPアドレスを更新することができる。その場合に以下の、cURLのコマンドを導入すると便利だろう。
<使い方>

# curl http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=MYDOMAIN.COM&p=PASSWORD&i=

上記のように cURLコマンドにアクセスアドレスを入力するだけでIPアドレスの更新が可能となる。

Edit
cURLのインストール手順

# cd /usr/local/src
# wget http://curl.haxx.se/download/curl-7.22.0.tar.gz
# tar zxvf curl-7.22.0.tar.gz
# ./configure --with-ssl=/usr/local/ssl
# make
# make install

Edit
参考となるリンク

http://linuxserver-guide.com/centos5/dns.html : http://linuxserver-guide.com/centos5/dns.html
RPMで確認する時

# rpm -qa | grep bind
# rpm -qi bind


添付ファイル: filenamed.conf 549件 [詳細] fileresolv.conf 526件 [詳細]