このページではLinuxサーバーで運用するDNSサーバーBIND/named起動設定の有効化の方法などについてビギナー向けに解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
自宅内DNSサーバーの構築

DNSサーバーの構築

hostsファイルの設定

BINDについて(〜9.3.x)

BINDについて(9.7.x〜)

named.confの設定(〜9.3.x)

named.confの設定(9.7.x〜)

ゾーンファイルの書式

ゾーンファイルの省略方法

既存のゾーンファイル(〜9.3.x)

既存のゾーンファイル(9.7.x〜)

正引きゾーンファイルの作成

逆引きゾーンファイルの作成

設定ファイルの書式チェック

namedの起動とコントロール

namedの動作確認

ルーターとホストの設定

DNSSECについて


namedを起動するアカウントについて

さて、設定が終わった named を起動する前に、ひとつ重要なことを覚えておかなくてはなりません。

namedは多くの サーバー アプリケーション の中で、外部の ホスト とのデータの受け渡しが最も頻繁に行われるものの一つです。

ということは、今回のように LAN の内部だけで使用する場合はともかくとして、 WAN 空間で「権威をもって回答を行うゾーン名」を配信する役目をもつ DNSサーバー の場合には、常に不正侵入の危険に晒されているといえるでしょう。

ですから、もしもnamedを root ユーザーアカウント デーモン として実行した場合、万が一namedに セキュリティ 上の欠陥があって不正侵入を許してしまうと、その侵入者は 「root アカウント ログイン したのと同じ」 状態になりうるため、サーバーを完全に乗っ取られる危険があるわけです。

そのため、namedはrootアカウントで実行すべきではなく、仮に不正侵入を許しても大丈夫なアカウントで実行させるのが約束事になっています。

通常namedは、namedを インストール したときに自動的に作成される システムアカウント "named" で実行します。

システムアカウント"named"は、 デフォルト ではシステムへの ログイン 権限を持っていませんから、そういう意味でも非常に安全なnamedの実行アカウントといえます。

関連セクションへ 関連セクション・ 固定IPでDNSサーバー構築


"構築中のLinuxサーバーのネットワーク設定の修正

named を起動して設定を有効にする前に、もう一つやっておくことがあります。それは、 構築中のLinuxサーバー 自身のネットワーク設定の、 名前解決 に関する部分の修正です。

"/etc/resolv.conf"の修正

WBEL CentOS インストール 作業 WBEL3のインストール(ネットワーク設定) CentOS3のインストール(ネットワーク設定) WBEL4のインストール(ネットワーク設定) CentOS4のインストール(ネットワーク設定) CentOS5のインストール(ネットワーク設定) や、インストール後のネットワーク設定 WBEL3のインストール後のネットワーク設定 CentOS3のインストール後のネットワーク設定 WBEL4のインストール後のネットワーク設定 CentOS4のインストール後のネットワーク設定 CentOS5のインストール後のネットワーク設定 では、 構築中のLinuxサーバー 自身が参照する DNSサーバー は、 WAN 空間に設置された ISP のDNSサーバーを指定したはずです。

ここまで BIND を設定した方には説明するまでもないことかもしれませんが、 構築中のLinuxサーバー 自身も、 サブネット "192.168.100.0/24 に所属する ホスト機 の一つに変わりはありません。

従って 構築中のLinuxサーバー が参照すべきはISPのDNSサーバーではなく、当自分自身でなければなりません。

そこで、参照するDNSサーバーの設定ファイルである、 "/etc/resolv.conf" を次のように書き換えてください。("/etc/resolv.conf"の意味、書き換えの方法については /etc/resolv.confの設定(WBEL3) /etc/resolv.confの設定(CentOS3) /etc/resolv.confの設定(WBEL4) /etc/resolv.confの設定(CentOS4) /etc/resolv.confの設定(CentOS5) をご覧ください。)

ISPのDNSサーバーを削除せずに ";" でコメント行として無効にしているのは、設定を簡単に元に戻すことができるようにという配慮です。
これは テキスト 形式の設定ファイルの、「書き換えの定石」ともいうべき方法ですので、これからもしばしば登場します。
;nameserver (ISPのDNSサーバーのIPアドレス1)
;nameserver (ISPのDNSサーバーのIPアドレス2)
search obenri.com
nameserver 127.0.0.1

もしも、現在設定しているホスト機が 構築中のLinuxサーバー 自身でなければ、

search obenri.com
nameserver 192.168.100.11

となることろです。

もちろん、 構築中のLinuxサーバー に対しても、"nameserver 192.168.100.11"という設定でも特に問題があるという訳ではありません。

しかし、この場合は ループバックアドレス を設定しておくほうが何かと好都合です。

例えば、"nameserver 192.168.100.11"と記述していたとすると 構築中のLinuxサーバー に割り当てる プライベートIPアドレス を変更したときには必ずこの部分の書き換えも必要になります。

しかし、 「普遍的に自分自身を示す IPアドレス であるループバックアドレス"127.0.0.1"をDNSサーバーに指定しておけば、自機のプライベートIPアドレスが変更になっても何ら設定を変える必要がないというわけです。

"/etc/hosts"の修正

web1.obenri.comのhostsファイルの設定 で、 hostsファイル を修正し、 FQDN を追加して 名前解決 を行わせている場合、この追加記述の部分についてはこれからhostsファイルに代わって BIND が名前解決を行うことになります。

実際には、この 構築中のLinuxサーバー (つまり自分自身)に対して行うべきすべての名前解決は、自分自身で稼動しているBINDだけで行うことができますので、理屈から言えば "/etc/host.conf" WBEL3のhost.confの設定 CentOS3のhost.confの設定 WBEL4のhost.confの設定 CentOS4のhost.confの設定 CentOS5のhost.confの設定 を、

order bind,hosts

に修正して、hostsファイルよりBINDによる名前解決を優先させればそれで良いことになります。

ただ、この方法はお勧めしません。

BINDは動作安定性が高く、滅多なことでは不具合は起こしませんが、設定そのものが複雑で解りにいため、例えば ループバックアドレス に関する設定 /etc/named.conf中のループパックアドレスに関する記述(〜9.3.x) ループバックアドレスに関するゾーンファイルの設定 にミスがあると、 構築中のLinuxサーバー は自分自身を見つけることができなくなり、多くの サーバー アプリケーション が動作不具合を起こす可能性があるからです。

つまり、

・"/etc/host.conf"の設定は デフォルト "order hosts,bind" のまま変更しない。

・"/etc/hosts"の設定は、ループバックアドレスへの名前解決情報だけを記述する。

という設定にしておくのがベターというわけです。

従って、 構築中のLinuxサーバー の"/etc/hosts"を次のように修正します。

127.0.0.1 localhost.localdomain localhost
#192.168.100.11 web1.obenri.com web1

既に ダイナミックDNS の設定に合わせて"/etc/hosts"を修正 web1.obenri.comのhostsファイルの修正 している場合も、同様に設定を修正します。

127.0.0.1 localhost.localdomain localhost
#192.168.100.11 web1.obenri.com web1 obenri.com www.obenri.com mail.obenri.com

ネットワーク設定の有効化

つい忘れがちですが、"/etc/resolv.conf"や"/etc/hosts"を修正したら、必ず設定を有効化する作業を行ってください。

DNSサーバーの構築に、
とても役に立った一冊です

方法はこちら WBEL3のネットワーク設定の有効化の方法 CentOS3のネットワーク設定の有効化の方法 WBEL4のネットワーク設定の有効化の方法 CentOS4のネットワーク設定の有効化の方法 CentOS5のネットワーク設定の有効化の方法 を参考にしてください。

関連セクションへ 関連セクション・ 固定IPでDNSサーバー構築


このページの先頭へ↑

namedの起動、再起動、設定の再読み込み

正確なスクリプトの場所は "/etc/rc.d/init.d/named" ですが、予めディレクトリ "/etc/rc.d/init.d/" シンボリックリンク "/etc/init.d/" で作成されていますので、 "/etc/init.d/named" でも実行することができます。

named の起動、停止は、予め準備されている シェル スクリプト "/etc/init.d/named" を利用して行います。

このシェルスクリプトが格納されているディレクトリには パス が通っていませんのでパス名付きで実行する必要があります パスが通っていない場所のファイルを実行するには

パス名を付けずに コマンド 名"named"のみで実行すると、パスが通っているnamedの実体プログラム "/usr/sbin/named" BIND(〜9.3.x)の構成ファイル BIND(9.7.x〜)の構成ファイル が呼び出されてしまいますので注意してください。

書式は以下のとおりです。作業はすべてroot アカウント から行います。

/etc/init.d/named start...namedの起動

/etc/init.d/named stop...namedの停止

[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# /etc/init.d/named startEnter
namedを起動中:                      [ OK ]
[root@web1 ~]# /etc/init.d/named stopEnter
namedを停止中:                      [ OK ]
[root@web1 ~]#

ブートファイルやゾーンファイルを書き換えた後にその設定を有効にするには、一度namedを停止して起動しなおすか、以下のコマンドのいずれかを実行します。

/etc/init.d/named restart...namedの再起動

/etc/init.d/named reload...namedの設定の再読み込み

[root@web1 ~]# /etc/init.d/named restartEnter
namedを停止中:                      [ OK ]
namedを起動中:                      [ OK ]
[root@web1 ~]# /etc/init.d/named reloadEnter
namedを再読み込み中:                   [ OK ]
[root@web1 ~]#

namedが現在稼動してるかどうかを確認するには、

/etc/init.d/named status...namedの状態確認

あるいは、 ps コマンドで起動プロセスを確認します。

[root@web1 ~]# /etc/init.d/named statusEnter
number of zones: 10
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
server is up and running  ←namedが実行中であることを示します。
[root@web1 ~]# ps ax | grep namedEnter パイプ処理の説明 grepコマンドの説明
 3400 ?    S   0:00 /usr/sbin/named -u named
 ↑namedがアカウント"named"で実行中であることを示します。
 3427 pts/0  S   0:00 grep named
 ↑このgrepコマンドのプロセスです。
[root@web1 ~]# /etc/init.d/named stopEnter
namedを停止中:                      [ OK ]
[root@web1 ~]# /etc/init.d/named statusEnter
rndc: connect failed: connection refused
 ↑namedのコントロールコマンド"rndc"が実行できないことを示します。
[root@web1 ~]# ps ax | grep namedEnter
 3450 pts/0  R   0:00 grep named
[root@web1 ~]#

実は、namedの本体プログラム"/usr/sbin/named"は、namedを起動することしかできません。

一方で起動中のnamedを制御するには"/usr/sbin/rndc" rndcコマンドについて(〜9.3.x) というコントロール用のプログラムを使わなければなりません。

"/etc/init.d/named"は、例えば"/etc/init.d/named start"と実行されると "/usr/sbin/named -u named" というコマンドを実行し、"/etc/init.d/named stop"と実行すると "/usr/sbin/rndc stop" を実行する、という具合に、必要な制御を簡単に行えるように内容が記述されているシェルスクリプトです。

先ほどの、

[root@web1 ~]# /etc/init.d/named stopEnter
namedを停止中:                      [ OK ]
[root@web1 ~]# /etc/init.d/named statusEnter
rndc: connect failed: connection refused
[root@web1 ~]#

という一見不可解なメッセージは実はそういう理由によるもので、「起動していない"/usr/sbin/named"に対しては"/usr/sbin/rndc"は実行できません。」という意味を表しているわけです。

関連セクションへ 関連セクション・ 固定IPでDNSサーバー構築


このページの先頭へ↑

namedを自動的に起動する

named は必要に応じて起動して使うものではなく、常に動作させておいて他の ホスト機 からの 名前解決 要求に備えなければなりません。

従ってnamedは、 デーモン として動作させておかなければ意味がありませんから、 構築中のLinuxサーバー が起動したときに自動的に起動するように設定しておいたほうが何かと好都合です。

設定は ntsysv コマンド で設定画面を開き、 "named" にチェックを入れるだけです。

namedをntsysvで自動起動登録する
"named"を"ntsysv"で自動起動登録する

設定が終わったら念のため一度 構築中のLinuxサーバー reboot コマンドで再起動し、上のパートで説明した動作確認の方法で、きちんと起動しているかどうかをチェックしてみてください。

関連セクションへ 関連セクション・ 固定IPでDNSサーバー構築


このサイトは リンクフリー です。趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。今のところ更新予定はありませんのでご了承ください。
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。