|
|
自宅内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について |
"/etc/named.conf"BIND(〜9.3.x)の編集
まず、
サブネット
内の適当な
クライアント機
から
SSHクライアント
で
構築中のLinuxサーバー
に
ログイン
します
それから
su
コマンド
で
ユーザーアカウント
を
"root"
に変更し、
cp
コマンドでバックアップを作成した後、
nano
エディタで
"/etc/named.conf"
を開きます
ただしファイルの位置がOSの種類で異なりますので、それぞれで少し作業方法が異なります。 WBEL3及びCentOS3の場合は、
となります。 一方のWBEL4及びCentOS4、CentOS5の場合は以下のように操作します。
↓
nanoで"/etc/named.conf"を開く |
||||||||
|
WBEL4及びCentOS4、CentOS5のブートファイルの場所は
"/var/named/chroot/
etc/named.conf" ですが、その シンボリックリンク "/etc/named.conf" からも普通に開いて保存することが出来ます。 以降、煩雑にならないように、WBEL4及びCentOS4、CentOS5のブートファイルを指す場合も支障がない限りは "/etc/named.conf" で説明します。 |
さて、 "/etc/named.conf/" は、次のセクションで説明するゾーンファイルを含めて、 named が動作中でも自由に書き換えることができます。 ただし、 WBEL や CentOS の サーバー アプリケーション は通常、設定ファイルを保存しただけでは設定は反映されません。もちろんnamedもその例外ではありません。 サーバーアプリケーションの設定ファイルは、通常サーバーアプリケーションの起動時に参照されて読み込まれますから、設定ファイルの保存後にサーバーアプリケーションの再起動を行うか、設定ファイルの再読み込みのコマンドを実行しなければ、設定ファイルの修正は有効になりませんので注意してください。
namedの再起動、設定ファイルの再読み込みについては
関連セクション・
固定IPでDNSサーバー構築
関連ページ・
名前解決とネームサーバー
|
||||||||
LAN専用としての"/etc/named.conf"まずは、 WBEL や CentOS に デフォルト で準備されている BIND のブートファイルである "/etc/named.conf" をご覧ください。 |
|||||||||
以下の設定ファイル例には、ホームページ上で見やすくするために
"/etc/named.conf"
では使用できない文字コードが含まれていますので、実際の設定ファイルにコピー&ペーストはできません。コピペ用のテキストファイルは
です。
|
この記述の中には、あってもなくても構わないものもありますが、邪魔な設定や修正が必要な部分というのはありません。 そしてこの記述に次の記述を追加すれば "/etc/named.conf" の設定は基本的に終了です。 |
||||||||
|
この二種類の"zone"命令は、順序としてはオリジナルの
"/etc/named.conf"
の
5.
と
6.
の間に入るべき設定です。
従って以後はその順序で説明します。 |
もしも複数の ドメイン名 を取得していてそれも併用したい場合には、正引きの記述だけを追加します。
BINDは本来、 WAN 空間で多くの クライアント から利用されることが第一の目的である サーバー アプリケーション です。 |
||||||||
|
|
従って、ありとあらゆるケースに柔軟に対処できるように、namedの設定ファイルは、 「設定が変更される可能性がほとんどゼロに近いところまで、設定の変更が可能になっている。」 という作りになっているために、一見すると大量の設定項目があるように思えてしまうわけです。 いきなりわけの解らない呪文のような設定ファイルを見せられて面食らっているかもしれませんが、そういう訳ですからあまり「ビビる」必要はありません。 更に今回は、その「高度な機能を持つアプリケーション」を、個人用途の LAN で利用するだけですから、
1.スレーブサーバー
2.自分の管理下にある クライアント機 のみでの利用であるため、 DNSキャッシュ の保持時間を考える必要がない。 3.LAN内でのみの使用なので、 セキュリティ に注意を払う必要がない。 という具合に、本当に難しい部分には全くといっていいほど手を加える必要はありません。
関連セクション・
固定IPでDNSサーバー構築
関連ページ・
名前解決とネームサーバー
|
||||||||
"/etc/named.conf"の文法と書式基本的な文法は次のとおりです。
命令文の終わりには必ず ";" を付ける必要があります。 また、 "//" から行末までと、 "/*" から "*/" はコメント行とみなされ、設定には反映されませんのでメモなどで利用することができます。 更にスペースとタブは、連続している場合は一つのスペースとみなされますので、設定内容を見やすくするためのインデントとして利用できます。
関連セクション・
固定IPでDNSサーバー構築
関連ページ・
名前解決とネームサーバー
|
|||||||||
"/etc/named.conf"のパートごとの説明1.基本的な動作設定を行う"options"命令主命令文のキーワード "options" には、 named の全体的な仕組みの基本となる諸々の定義と設定を行います。 "options"には、namedの様々な運用形態や運用規模に対応できるように、非常に多くの補助命令が用意されています。 しかし今回のような極めて小規模なケースで必ず記述しなければならないのは、 ゾーンファイルを格納するディレクトリ名の定義 だけです。 従ってこの"options"パートは最低限の記述として、
だけでもOKです。 もしもこの補助命令 "directory" の定義を行わないとすると、以下に記述する主命令文のキーワード "zone" の記述で、参照するゾーンファイル名を 絶対パス 名で記述しなければならなくなります。
ゾーンファイルが一つだけならばここを絶対パス名で記述してしても大して手間は変わりませんが、今回は少なくとも9種類のゾーンファイルが必要ですので"options"にディレクトリ名を定義し、以後の記述を 相対パス 名で簡略化できるようにしておきましょう。 さて、オリジナルの"options"からコメントの部分を除くと次のようになります。
|
|||||||||
rndc
コマンドについては、2.と8.及び
にも説明があります。
|
補助命令である "dump-file" と "statistics-file" は、namedをコントロールする アプリケーション である rndc コマンド での出力結果を保存するパスとファイル名の指定です。 具体的には、 "dump-file" は DNSキャッシュ の内容、 "statistics-file" はnamedが 名前解決 を行った回数の統計データです。 そういう特殊なコマンドを使用することはないかもしれませんが、削除してしまうこともありませんから記述はそのまま残しておきましょう。 その他に、"options"に記述する補助命令としては、 DNSサーバー の応答を早くするための フォワーダー の利用をお勧めします。
namedは特に設定を行わなければ、
クライアント
からの
名前解決
要求に対して、自分自身が名前解決情報を持っていない場合にはまず
ルートサーバー
に問い合わせを行います
|
||||||||
|
|
名前解決の流れとしては、これが最もシンプルで間違いのない方法なのですが、普段から世界中の問い合わせを受け付けているルートサーバーは、接続がスムーズに行かないことあり、名前解決に時間を要してしまうことが珍しくありません。
デフォルトでのnamedの問い合わせの流れ そこで、新たな名前解決をいちいちルートサーバーに問い合わせるのではなく、 「普段から多くの名前解決をこなしていて、大量のDNSキャッシュを持っている信頼性の高いDNSサーバー」 に対して優先的に名前解決情報をもらいに行けば、実用上は何の問題もなく、スムーズな名前解決が行われることになります。 これが フォワーダー と呼ばれるものです。
フォワーダーを利用したnamedの問い合わせの流れ フォワーダーを設定するには"/etc/named.conf"の"options"命令の中に、次のように記述します。
この設定により、 1. まず自分自身で権威をもって名前解決を担う ドメイン名 "obenri.com" 由来の FQDN の名前解決を行う。 2.それ以外の名前解決情報を外部のDNSサーバー "210.19x.160.138" に問い合わせる。 3. "210.19x.160.138" が応答できないときは、 "210.19x.160.139" に問い合わせる。 4. "210.19x.160.138" も "210.19x.160.139" も応答できないときは、ルートサーバーに問い合わせを行う。 という優先順位で、効率よく名前解決を行うことができるようになります。 フォワーダーに指定するDNSサーバーとしては、 WAN 空間に設置されている応答可能なDNSサーバーであれば何でもかまいません。もちろん、いくつ書き並べてもかまいませんが、余程具合の悪いDNSサーバーを指定しない限り、三つもあれば充分でしょう。 |
||||||||
| 自宅から接続するときのISP側のルーターと、そのISPが所有するDNSサーバーが収容されているサブネットは、高速に接続できる環境になっているはず、というのがその根拠です。 |
ただし、一般的には、回線を契約している
ISP
の所有しているDNSサーバーが最も応答が良いので、
2.rndcによるコントロールの設定 |
||||||||
|
|
主命令"controls"は、そのrndcの実行を制御するためのものです。
記述内容の意味としては、 「 IPアドレス "127.0.0.1(つまり 構築中のLinuxサーバー )で動作するnamedに対しては、"localhost(つまり 構築中のLinuxサーバー 自身)"からの制御を有効にし、制御するためには"rndckey"という暗号化キーを必要とする。」 ということになります。 この記述を適当に変更すれば、外部の ホスト機 から極めて安全にBINDを制御することができるようになります。 ただ現在構築しているのは、 セキュリティ 的に何ら配慮の必要のない LAN 内部の DNSサーバー ですから、頻繁に状況をチェックしたり、設定を変えたりすることはないでしょう。 また、 SSHクライアント からリモートで ログイン してしまえば、この設定のままでrndcを使用できますし、極端にいえばrndcを直接使わなくとも シェル スクリプト "/etc/init.d/named" で間接的にBINDをコントロールすることができます。 つまり SSH で 構築中のLinuxサーバー に直接ログインできる環境であれば、この"controls"命令の内容を変更することはあまり意味を持ちません。 この記述はそのままにしておいていいでしょう。 3.ルートサーバーのためのゾーンファイル設定 |
||||||||
対応するゾーンファイルの記述は
です。
|
named が参照する ルートサーバー の所在地情報を記述したゾーンファイルを指定します。 ゾーンファイルの指定は主命令 "zone" です。
この記述で、"zone"の次の""の中は、通常 ドメイン名 が記述され、そのドメイン名に関する 名前解決 のゾーンファイルを指し示すためのキーワードになりますが、ここでは「ルートサーバーに関する記述です」という意味を表す ".(ドット)" が入ります。 次の "IN" は、以後に続く「 "{}" 内の記述を補助命令として扱う」、という意味の「決まり文句」です。 次の "type" は動作タイプの指定のための補助命令です。スペースの後のパラメータで動作タイプを指定しますが、一般的には、 |
||||||||
|
なぜルートサーバーへの問い合わせパラメータが
"hint"
なのでしょうか。
勝手な想像ですが、ルートサーバーから返ってくる答えは、実際には名前解決の情報そのものではなく、 「その名前解決は何処其処の何某が知ってるよ」 という 「名前解決のヒント」 だけ、だからじゃないかな?と思っています。 |
"hint" ...ルートサーバーへの問い合わせとして動作。 "master" ...マスターDNSサーバーとして動作。 "slave" ...スレーブDNSサーバーとして動作。 のいずれかになります。ここでは当然 "hint" となります。 次の "file" は、ルートサーバーの所在地などが記述してあるゾーンファイルの名前を指定する補助命令です。 スペースに続いてファイル名を "" の中に記述します。 そのファイルの場所が、前の"options"命令で指定されたディレクトリ内であれば、このように パス 名は省略できます。 つまりこの場合、 "/var/named/named.ca" というファイルを指し示していることになります。 4.ローカルホスト(一般名)の正引きゾーンファイル設定 |
||||||||
対応するゾーンファイルの記述は
です。
|
問い合わせを行ってきた ホスト機 に、 「あなた自身を示す普遍的な ホスト名 である"localhost"に対する IPアドレス は、 ループバックアドレス である"127.0.0.1"ですよ。」 と教えてあげる、とてもおせっかいなゾーンファイルの指定です。
普通こういった「あたりまえすぎる」
名前解決
は、
クライアント機
の
hostsファイル
このゾーンファイルは現実には、 構築中のLinuxサーバー が、何らかの事情で自分自身のhostsファイルを参照できなくなったときのための予備として存在すると思っていいでしょう。 |
||||||||
hostsファイルの内容を勝手に書き換える
アプリケーション
が存在する以上
、この設定をはずす訳にはいかないでしょうね。精神的に。
|
とはいえ、クライアント機のhostsファイルの"localhost"に関する記述が 「何故か参照されなくなってしまった。」 ときのためにも、保険としてとりあえず有効にしておきましょう。
"zone"に対する ドメイン名 の記述については、ドメイン名ではありませんが普遍的な「自分自身」を示すローカルなホスト名である "localhost" となります。 また、今回はスレーブサーバーを設置しませんので、 ルートサーバー に対する問い合わせの"zone"を除いて、"zone"の動作タイプはすべて "master" となります。 対象となるゾーンファイルは "/var/named/localhost.zone" です。 "allow-update" という補助命令は、この named 自身を ダイナミックDNS の サーバー として利用するような場合、 nsupdate コマンドなどで外部からゾーンファイルの内容を書き換える必要があるときに、その書き換えを許可する IPアドレス などを記述するものです。 今回はもちろんそういう用途には使いませんから、この補助命令は明示的に "allow-update { none; }" と記述します。以後の"zone"命令も同様の指定を行います。 4'.ローカルホスト(DNS名)の正引きゾーンファイル設定 |
||||||||
対応するゾーンファイルの記述は
です。
|
問い合わせを行ってきた ホスト機 に、 「あなた自身を示す DNS 名としての ホスト名 である"localhost.localdomain"に対する IPアドレス は、 ループバックアドレス である"127.0.0.1"ですよ。」 と教えてあげる、更におせっかいなゾーンファイルの指定です。
前に説明した
"localhost"
は、例えば
WindowsOS
の
NetBIOS over TCP/IP
や
MacintoshOS
のAppleTalk over
TCP/IP
ただ、インターネット空間で使用される
ホスト名
の
FQDN
は、構造的に"名前"の部分と"TLD"の部分を
".(ドット)"
で区切った形になっています
つまり、この ".(ドット)"で区切る形 である DNS名 でしか所在地情報を扱わない サーバー アプリケーション では、どうしても ".(ドット)" で区切られた形での 「自分の名前」 が必要になることがあります。 |
||||||||
この
"localhost.localdomain"
も、ちゃんと
"/etc/hosts"
に記述されています
。
|
そこで約束事として、 "localhost.localdomain" という「自分自身を示す仮のDNS名」を設定する必要があるわけです。 この4'はそのための正引きゾーンファイルの指定です。
"zone"に対する ドメイン名 の記述については、登録されたドメイン名ではありませんが "localhost.localdomain" の ".(ドット)" 以降をドメイン名とみなすことができますから、 "localdomain" となります。 補助命令についてはそれぞれ、 動作タイプ..."master" ゾーンファイルのファイル名..."/var/named/localdomain.zone" アップデートの可否..."none" 5.ループバックアドレスの逆引きゾーンファイル設定 |
||||||||
対応するゾーンファイルの記述は
です。
|
問い合わせを行ってきた ホスト機 に、 「あなた自身を示す普遍的な ループバックアドレス "127.0.0.1"に対する ホスト名 は"localhost"ですよ。」 と教えてあげる、とても親切なゾーンファイルの指定です。 WindowsOS などで用いる クライアント 用途のホスト機にとっては、こういった「自分自身の ループバックアドレスに対する逆引きの 名前解決 」は、動作に必須ではありません。基本的には4.の「正引き」だけで充分です。 ただ、現在構築中の named は サブネット 内の他の クライアント機 だけではなく、多数の サーバー アプリケーション を稼動させる 構築中のLinuxサーバー 自身も利用しますから、この設定をはずす訳にはいきません。
|
||||||||
CIDR
の場合の逆引きの記述はどうなるの?、という疑問がわくかもしれませんが、普通は自宅の
LAN
でCIDRはしませんから、考える必要はありません。
ちなみに、 ISP からCIDRで固定の IPアドレス を割り当ててもらっていて、 WAN 空間で使用するDNSサーバーを設置する場合、逆引きに関するnamedの設定はISPによって書式が異なるのが普通です。 |
"zone"に対する ドメイン名 の記述が、 "0.0.127.in-addr.arpa" という呪文のようなものになっていますが、これにはきちんとした「逆引き用の」記述ルールがあります。解りにくいかもしれませんので、下に図解してみました。
逆引きの場合の"zone"のキーワードの付け方1 つまり、 |
||||||||
|
|
「逆引きの対象となるサブネットの、 ネットワーク部 を、右側の オクテット から順番に"."で区切って並べ、末尾に ".in-addr.arpa"を付ける。」 という形になります。 しかし、「あれっ、ループバックアドレスは "127.0.0.0/8" でしょ?。だったら "127.in-addr.arpa" が正しいのでは?。」 と思われるかもしれません。 ここで思い出して欲しいのは、 「"127.0.0.0/8"はループバックアドレスの予約範囲であって、通常は"127.0.0.1"しか使われない。」 ということです。 つまり、ループバックアドレスに対する逆引きの名前解決については、 "127.0.0.1" に対してのみ行うことができればよい訳ですから、この"zone"では "0.0.127.in-addr.arpa" と指定しておいて、最後のオクテットが "1" の場合の名前解決をゾーンファイルに記述すれば実用上は何の問題もないという訳です。 補助命令についてはそれぞれ、 動作タイプ..."master" ゾーンファイルのファイル名..."/var/named/named.local" アップデートの可否..."none" A."obenri.com"に対する正引きゾーンファイル設定 |
||||||||
| A.とB.は、追加記述する必要のあるパートです。必要に応じてA’.も追加記述します。 |
この named を構築する第一の目的である "obenri.com" に対するの正引き用ゾーンファイルの指定です。 これは次のように記述して設定を追加します。 |
||||||||
対応するゾーンファイルの記述は
です。
|
細かい説明はもう不要かもしれませんが、"zone"に対するキーワードは、対象となる ドメイン名 "obenri.com" をそのまま記述します。 また、補助命令についてはそれぞれ、 動作タイプ..."master" ゾーンファイルのファイル名..."/var/named/obenri.com.zone" アップデートの可否..."none" となります。 ファイル名には特に決まりがあるわけではなく、実際に使用するゾーンファイルの名前になっていればOKですので、 "ドメイン名.zone" にこだわる必要は特にありません。 A’."ugegege.com"に対する正引きゾーンファイル設定複数の ドメイン名 について設定を行う場合に記述します。
B.サブネットのIPアドレスに対する逆引きゾーンファイル設定LAN で使用する プライベートIPアドレス に対する逆引き用ゾーンファイルの指定です。 これは次のように記述して設定を追加します。 |
||||||||
対応するゾーンファイルの記述は
です。
|
説明が重複しますが、"zone"命令に対するキーワード "100.168.192.in-addr.arpa.zone" は、次のようにして決められたものです。
逆引きの場合の"zone"のキーワードの付け方2 補助命令は、 動作タイプ..."master" ゾーンファイルのファイル名..."/var/named/100.168.192.in-addr.arpa.zone" アップデートの可否..."none" 6.IPv6用ループバックアドレスの逆引きゾーンファイル設定 |
||||||||
対応するゾーンファイルの記述は
です。
|
IPv6
しかし、"localhost"に対する正引きと、 ループバックアドレス に対する逆引きの設定だけはあっても邪魔にはならないでしょう。そのまま残しておきましょう。
補助命令については説明の必要はないと思いますので割愛します。 7.7'.誤った逆引きに対処するゾーンファイル設定 |
||||||||
対応するゾーンファイルの記述は
です。
|
IPアドレス "0.0.0.0" は、すべてのIPアドレスの先頭ですから、 ネットワークアドレス 以外ではあり得ません。 |
||||||||
|
|
同様に、IPアドレス "255.255.255.255" は、すべてのIPアドレスの末尾ですから、 ブロードキャストアドレス 以外ではあり得ません。 また、ネットワークアドレスとブロードキャストアドレスには特定の ノード を割り当てることはできませんから、 ホスト名に逆引きすることはできません 。 ところが、もしもある クライアント が、これらのIPアドレスに対する逆引きの 名前解決 を要求してきたとしたら、 named は 「自分では名前解決できない」 と判断し、上位の DNSサーバー や ルートサーバー に問い合わせてしまうことになります。 もちろん、これらのIPアドレスはどんなに優秀なDNSサーバーでも名前解決はできませんから、いずれは「名前解決不可能」となって処理されます。 しかし、名前解決が不可能であることが最初から解っているIPアドレスについて、馬鹿正直にせっせと外部に問い合わせを行わせるのは、通信資源の浪費といわざるを得ません。 以下の二つのパートは、そういった 「無駄な問い合わせ」 に対してnamedが自分自身でエラー処理し、外部への問い合わせを発生させないようにする"zone"の設定となります。
補助命令については説明の必要はないと思いますので割愛します。 8.rndc用暗号化キーの所在の指定上記の1.2.で説明した、 rndc コマンド を、 セキュリティ をもって実行するための暗号化キーの場所を示します。主命令は "include" です。 |
||||||||
| /etc/rndc.key は、暗号化された文字列が書かれた テキスト ファイルです。内容は cat コマンド で見ることができます。 |
ここで指定されている "/etc/rndc.key" は、 WBEL や CentOS では最初から準備されていますので、直ぐに利用することができます。
関連セクション・
固定IPでDNSサーバー構築
関連ページ・
名前解決とネームサーバー
|
||||||||
"/etc/named.conf"の例以上の内容で作成した "/etc/named.conf" は、こちらをクリックすると表示できます。 この テキスト ファイルには余分な文字は入っていませんから、開いてコピー&ペーストで使用するか、 ダウンロード して使用してください。 |
|||||||||
|
DNSサーバーの構築に、
とても役に立った一冊です ↓ |
もちろん、書き換えが必要な部分は適宜書き換えてください。
記述が終わったら
"/etc/named.conf"
を保存し、nanoエディタを終了してください
"/etc/named.conf" の編集が終わっても、ゾーンファイルの準備ができるまでは、 named の起動や再起動はできませんので注意してください。
関連セクション・
固定IPでDNSサーバー構築
関連ページ・
名前解決とネームサーバー
|
|
|
BINDについて(〜9.3.x)
<<Previous
|
Next>>
ゾーンファイルの書式
|
| このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。 |
| ”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。 |