このページではLinuxサーバーで運用するDNSサーバーBIND(〜9.3.x)/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について


DNSサーバー"BIND(〜9.3.x)"について

WBEL CentOS では、 DNSサーバー アプリケーション として BIND を用います。

とはいっても、BINDは UNIX 系の OS にとって、 DNS に関しては唯一ともいえるアプリケーションですから他に選択の余地はないといえます。

BINDはDNSサービスを提供するアプリケーション名ですが、その実体プログラムは" named "と呼ばれるものです。

従って、以後の説明では"BIND"よりも"named"という表現がほとんどになってきますが、意味としては同じものを指しますので悩まないようにしてください。

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


OSの種類によるBINDの違いについて

WBEL 3、WBEL4、 CentOS 3、CentOS4、CentOS5には、標準でほぼ同じバージョンの BIND インストール されていますので、基本的な設定内容に違いはありません。

ただこの中で、WBEL4、CentOS4、CentOS5では セキュリティ 対策としてBINDに chroot の仕組みが組み込まれていますので、設定ファイルの配置がWBEL3やCentOS3とは異なります。

chrootの意味と具体的な設定ファイルの配置についてはこのページで後ほど説明しますが、このコンテンツで解説するのは、 LAN 内部での利用に限定した DNSサーバー の構築ですから、そこまでセキュリティにこだわる必要はないかもしれません。

ただこのページをご覧の方であれば、将来的に WAN 空間に対して 権威あるDNSサーバー 権威あるDNSサーバーとは を設置する可能性は高いでしょうから、ここは多少面倒でもセキュリティを重視してchrootを有効にしたまま設定を行いましょう。

また、この コンテンツ の内容に従ってインストールされた CentOS5 では、BINDの基本動作に必要な設定ファイル類がインストールされていないはずですので、 yum を使って "caching-nameserver" パッケージを追加インストールしておきます。

まず、 サブネット 内の適当な クライアント機 から SSHクライアント 構築中のLinuxサーバー ログイン します SSHクライアントでサーバーに接続する(CentOS5)

それから su コマンド ユーザーアカウント "root" に変更し、以下のようにコマンドを実行してインストールを行います。

[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# yum install caching-nameserverEnter
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.nara.wide.ad.jp
* extras: ftp.nara.wide.ad.jp
* updates: rsync.atworks.co.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package caching-nameserver.i386 30:9.3.6-16.P1.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================
Package         Arch    Version     Repository    Size
=============================================================================
Installing:
caching-nameserver    i386    30:9.3.6-16.P1.el5    base    62 k

Transaction Summary
=============================================================================
Install   1 Package(s)
Update    0 Package(s)

Total download size: 62 k
Is this ok [y/N]:yEnter
  中略
Installed: caching-nameserver.i386 30:9.3.6-16.P1.el5
Complete!
[root@web1 ~]#

またCentOS5では、従来型のBIND( バージョン9.3.x )だけではなく、 DNSSEC に対応したBIND( バージョン9.7.x )を利用することもできます。

CentOS5でバージョン9.7.xのBINDを使用するには、すでにインストールされているバージョン9.3.xのBINDを アンインストール して、改めてバージョン9.7.xをインストールする必要があります。

また、CentOS6では従来型のBIND(バージョン9.3.x)は標準で提供されておらず、バージョン9.7.xが標準となっています。

BIND9.3.x以前とBIND9.7.x以降では、必要なファイル類の構成と、ブートファイル "named.conf" の記述内容が大幅に異なりますので、以後、これらのバージョンは分けて解説します。

WBEL3、WBEL4、CentOS3、CentOS4、CentOS5(標準)の場合

WBEL及びCentOS5以前で従来のBIND(〜バージョン9.3.x)でDNSサーバーを構築される方は、このページ BINDについて(〜9.3.x) で引き続き概要説明をご覧いただいた後、左上のメニューから (〜9.3.x) と記載のある項目を選択してご覧ください。

その他の項目は共通です。

CentOS5(BIND97)、CentOS6の場合

CentOS5でバージョン9.7.xのBINDでDNSサーバーを構築される方、CentOS6のBINDでDNSサーバーを構築される方は、 BINDについて(9.7.x〜)DNSのスタンダードアプリケーションBIND(9.7.x〜)について説明します よりで概要説明をご覧いただいた後、左上のメニューから (9.7.x〜) と記載のある項目を選択してご覧ください。

その他の項目は共通です。

なお、BIND9.7.xには標準で DNSSEC の機能が実装されています。

DNSSECの実装についての具体的な説明はについては割愛しますが、概要についてはこちらに簡単にまとめていますので、興味のある方はご一読ください。

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


このページの先頭へ↑

BINDの構築に必要なファイル(WBEL3,CentOS3)

WBEL3 CentOS3 インストール DNSネームサーバー WBEL3でのDNSネームサーバーのインストール CentOS3でのDNSネームサーバーのインストール を選択していれば、 BIND と周辺パッケージは既に 構築中のLinuxサーバー にインストールされているはずです。

インストール済みのBINDで、操作や設定が必要なファイルを以下に示します。

BINDの必要ファイル一覧(WBEL3)
BINDの必要ファイル一覧(WBEL3,CentOS3)

BINDの本体プログラムは"/usr/sbin/named"ですが、これを直接呼び出すことはまずありません。

実際にはこの"/usr/sbin/named"を用いて、起動や終了を容易にコントロールできるように記述された スクリプト である "/etc/rc.d/init.d/named" を用います。

また"/etc/rc.d/init.d/"の シンボリックリンク が"/etc/init.d/"になっていますので、スクリプトは "/etc/init.d/named" でも呼び出すことができます。

例えば、

"/etc/rc.d/init.d/" には パス が通っていません パスが通っていないディレクトリにあるファイルの実行 から、パスを省略して実行することはできません。

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

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

という使い方になります。

BINDの基点となる設定ファイルは ブートファイル"/etc/named.conf"

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

です。

"/etc/named.conf"には、 named の基本的な動作設定の他、以下に説明するゾーンファイルを呼び出すための記述を行います。

ゾーンファイル は、ドメイン毎の FQDN IPアドレス との対照表と、その扱いに関する設定を記述したものです。

デフォルト のゾーンファイルは "/var/named/" 以下に配置されていて、ゾーンファイルを独自に追加する場合もこの位置に行います。

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


このページの先頭へ↑

BINDの構築に必要なファイル(WBEL4,CentOS4)

WBEL4 CentOS4 インストール DNSネームサーバー WBEL4でのDNSネームサーバーのインストール CentOS4でのDNSネームサーバーのインストール を選択していれば、 BIND と周辺パッケージは既に 構築中のLinuxサーバー にインストールされているはずです。

インストール済みのBINDで、操作や設定が必要なファイルを以下に示します。

デフォルト では "chroot" の仕組みが有効になっているため、WBEL3やCentOS3に比べると少し複雑になります。

BINDの必要ファイル一覧(WBEL4,CentOS4)
BINDの必要ファイル一覧(WBEL4,CentOS4)

BINDは通常、その実行プログラムnamedを "named" という アカウント で実行して稼動させます namedの実行アカウントについて

アカウントnamedは特別な権限を持っていませんが、named デーモン の起動時に参照すべき設定ファイルがディレクトリの上位にあるため、通常はファイルシステムの全域に渡って参照権限を持たせる必要があります。

つまり、もしもBINDに不具合があってアカウントnamedでの不正 ログイン を許してしまうと、見知らぬ第三者にOSのファイルシステムのほぼすべての領域をその目にさらしてしまうことになるわけです。

ところがその参照ファイルをすべて "/var/named/chroot/" 以下に集めておき、アカウントnamedには 「"/var/named/chroot/"以下だけしか参照させない。」 という設定を施せば、万が一不正ログインを許してもそれ以外の場所を参照されることはありません。

これが "chroot" による セキュリティ 維持の仕組みというわけです。

さて、BINDの本体プログラムは"/usr/sbin/named"ですが、これを直接呼び出すことはまずありません。

実際にはこの"/usr/sbin/named"を用いて、起動や終了を容易にコントロールできるように記述された スクリプト である "/etc/rc.d/init.d/named" を用います。

また"/etc/rc.d/init.d/"の シンボリックリンク が"/etc/init.d/"になっていますので、スクリプトは "/etc/init.d/named" でも呼び出すことができます。

例えば、

"/etc/rc.d/init.d/" には パス が通っていません パスが通っていないディレクトリにあるファイルの実行 から、パスを省略して実行することはできません。

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

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

という使い方になります。

BINDの基点となる設定ファイルは ブートファイル"/var/named/chroot/etc/named.conf" です。

"/var/named/chroot/etc/named.conf"には、 named の基本的な動作設定の他、以下に説明するゾーンファイルを呼び出すための記述を行います。

ただし、 "/etc/named.conf" が"/var/named/chroot/etc/named.conf"へのシンボリックリンクになっていますので、編集作業でこのファイルを開くときは"/etc/named.conf"を指定することができます。

ゾーンファイル は、ドメイン毎の FQDN IPアドレス との対照表と、その扱いに関する設定を記述したものです。

デフォルトのゾーンファイルは "/var/named/chroot/var/named/" 以下に配置されていて、ゾーンファイルを独自に追加する場合もこの位置に行います。

既存のゾーンファイルはブートファイルと同様に本来の(chrootを使用しない場合の)配置場所である "/var/named/" 以下にシンボリックリンクが作成してありますので、編集作業でこれらのファイルを開くときは"/etc/named/ゾーンファイル名"で指定することができます。

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


このページの先頭へ↑

BINDの構築に必要なファイル(CentOS5 BIND9.3.x)

CentOS5 インストール DNSネームサーバー CentOS5でのDNSネームサーバーのインストール を選択し、更にこのページの前半で説明したステップで "caching-nameserver" のインストールを行っていれば、 BIND と基本的な周辺パッケージは既に 構築中のLinuxサーバー にインストールされているはずです。

インストール済みのBINDで、操作や設定が必要なファイルを以下に示します。

デフォルト では "chroot" の仕組みが有効になっているため、WBEL3やCentOS3に比べると少し複雑になります。

CentOS5の場合、各設定ファイルのレイアウトはWBEL4やCentOS4と同じですが、後述する ブートファイル "/var/named/chroot/etc/named.conf" は準備されていないため、新規に作成しなければならない点に注意してください。

BINDの必要ファイル一覧(CentOS5 BIND9.3.x)
BINDの必要ファイル一覧(CentOS5 BIND9.3.x)

BINDは通常、その実行プログラムnamedを "named" という アカウント で実行して稼動させます namedの実行アカウントについて

アカウントnamedは特別な権限を持っていませんが、named デーモン の起動時に参照すべき設定ファイルがディレクトリの上位にあるため、通常はファイルシステムの全域に渡って参照権限を持たせる必要があります。

つまり、もしもBINDに不具合があってアカウントnamedでの不正 ログイン を許してしまうと、見知らぬ第三者にOSのファイルシステムのほぼすべての領域をその目にさらしてしまうことになるわけです。

ところがその参照ファイルをすべて "/var/named/chroot/" 以下に集めておき、アカウントnamedには 「"/var/named/chroot/"以下だけしか参照させない。」 という設定を施せば、万が一不正ログインを許してもそれ以外の場所を参照されることはありません。

これが "chroot" による セキュリティ 維持の仕組みというわけです。

さて、BINDの本体プログラムは"/usr/sbin/named"ですが、これを直接呼び出すことはまずありません。

実際にはこの"/usr/sbin/named"を用いて、起動や終了を容易にコントロールできるように記述された スクリプト である "/etc/rc.d/init.d/named" を用います。

また"/etc/rc.d/init.d/"の シンボリックリンク が"/etc/init.d/"になっていますので、スクリプトは "/etc/init.d/named" でも呼び出すことができます。

例えば、

"/etc/rc.d/init.d/" には パス が通っていません パスが通っていないディレクトリにあるファイルの実行 から、パスを省略して実行することはできません。

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

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

という使い方になります。

DNSキャッシュとしてのみ動作するDNSサーバーは、 キャッシュオンリーDNSサーバー と呼ばれることがあります。

さて、 "caching-nameserver" がインストールされたCentOS5のBINDシステムには、 構築中のLinuxサーバー 自身がのみが参照可能で、 DNSキャッシュ としてのみ動作するように設定されている ブートファイル "named.caching-nameserver.conf" と、これが参照する設定記述ファイル "named.rfc1912.zones" が準備されています。

もちろんこれらの設定ファイルを適当に書き換えることで外部ホストから参照可能なDNSサーバーを構築することも可能です。

しかしそれではただでさえ扱うファイル数の多いBINDシステムがもっと複雑になってしまいますので、この コンテンツ では以前のバージョンのCentOSと同じくBINDの基点となる設定ファイルとして ブートファイル"/var/named/chroot/etc/named.conf" を使用することにします。

先ほど述べたとおり、CentOS5には ブートファイル "/var/named/chroot/etc/named.conf" は準備されていませんが、実は CentOS4 "/var/named/chroot/etc/named.conf" をそのまま利用することができます。

CentOS4の"/var/named/chroot/etc/named.conf"は http://www.obenri.com/_dnsserver/image/named.conf に置いていますから、以下のように操作してお使いのCentOS5のファイルシステム上に設置することができます。

まず、 サブネット 内の適当な クライアント機 から SSHクライアント 構築中のLinuxサーバー ログイン します SSHクライアントでサーバーに接続する(CentOS5)

それから su コマンド ユーザーアカウント "root" に変更し、以下のようにコマンドを実行して設置を行います。

もともと存在する "named.caching-nameserver.conf" は、同じディレクトリに "named.conf" が存在すると無効になりますので特に削除する必要はありません。 "named.rfc1912.zones" も同様です。
また、 "named.conf" になぜ右のような パーミッション を設定しなければならないかは namedを起動するアカウントについて をご覧ください。ちゃんと理由があります。
[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# cd /var/named/chroot/etc/Enter ←ディレクトリを移動します cdコマンドについて
[root@web1 etc]# wget http://www.obenri.com/_dnsserver/image
/named.conf
Enter
           ↑お便利サーバーから"named.conf"を取得します wgetコマンドについて
--07:04:12-- http://www.obenri.com/_dnsserver/image/named.conf
中略
07:04:13 (97.16 KB/s) - `named.conf' を保存しました [1390/1390]

[root@web1 etc]# chown root.named named.confEnter ←所有者を設定します chownコマンドについて
[root@web1 etc]# chmod 640 named.confEnter ←パーミッションを設定します chmodコマンドについて
[root@web1 etc]# cd /etc/Enter ←シンボリックリンクの作成先に移動します
[root@web1 etc]# ln -s /var/named/chroot/etc/named.conf .Enter
          ↑カレントディレクトリにシンボリックリンクを作成します lnコマンドについて [root@web1 etc]#

"/var/named/chroot/etc/named.conf"には、 named の基本的な動作設定の他、以下に説明するゾーンファイルを呼び出すための記述を行います。

上の作業で "/etc/named.conf" で"/var/named/chroot/etc/named.conf"へのシンボリックリンクを作成しましたので、編集作業でこのファイルを開くときは"/etc/named.conf"を指定することができます。

ゾーンファイル は、ドメイン毎の FQDN IPアドレス との対照表と、その扱いに関する設定を記述したものです。

デフォルトのゾーンファイルは "/var/named/chroot/var/named/" 以下に配置されていて、ゾーンファイルを独自に追加する場合もこの位置に行います。

既存のゾーンファイルはブートファイルと同様に本来の(chrootを使用しない場合の)配置場所である "/var/named/" 以下にシンボリックリンクが作成してありますので、編集作業でこれらのファイルを開くときは"/etc/named/ゾーンファイル名"で指定することができます。

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


このページの先頭へ↑

いきなりBINDを起動してみる

とりあえず DNSサーバー の動作を確認するために、 BIND を稼動させてみましょう。

動作確認は 構築中のLinuxサーバー と同じ サブネット 内の クライアント機 から行います。

ただしそのクライアント機は既に自動設定で外部のDNSサーバーを参照する設定になっているはずですので、その参照先を 構築中のLinuxサーバー に、すなわち IPアドレス "192.168.100.11" に変更する必要があります。

クライアント OS の参照DNSサーバーの設定方法はOSの種類によって様々ですので、個々に説明します。

クライアント機が LinuxOS の場合は "/etc/resolv.cof" を編集して設定します WBEL3の参照DNSサーバーの設定 CentOS3の参照DNSサーバーの設定 WBEL4の参照DNSサーバーの設定 CentOS4の参照DNSサーバーの設定 CentOS5の参照DNSサーバーの設定

WindowsOSの場合のDNS設定の方法

Windows7やWindowsVista、WindowsXPの場合、操作環境を変更すると全然別の場所になります。が、操作環境を変更するような「慣れた」方にはこの説明は不要だと思いますので割愛します。

Windows7 WindowsVista の場合

"スタート"→"コントロールパネル(C)"→"ネットワークとインターネット"→"ネットワークと共有センター"→"ネットワーク接続の管理"→使用中のネットワークのアイコンを右クリックして"プロパティ"を開く

WindowsXP の場合

"スタート"→"コントロールパネル(C)"→"ネットワークとインターネット接続"→"ネットワーク接続"→使用中のネットワークのアイコンを右クリックして"プロパティ"を開く

Windows2000 Me の場合

"スタート"→"設定(S)"→"ネットワークとダイヤルアップ接続"→使用中のネットワークのアイコンを右クリックして"プロパティ"を開く

Windows98 Windows95 の場合

"スタート"→"設定(S)"→"コントロールパネル(C)"→"ネットワーク"→使用中のネットワークのアイコンを右クリックして"プロパティ"を開く

WindowsOS の場合、これらの方法で開いた "接続のプロパティ" の中から、 ”インターネットプロトコル(TCP/IP)” (Windows7、WindowsVistaの場合は”インターネットプロトコルバージョン4(TCP/IPv4))”を選択して プロパティ(R) をクリックします。

お使いの環境によっては(特にWindows98、95の場合)、"TCP/IP"に関する接続 プロトコル が複数表示される場合があります。こういう場合は Ethernet UTP 、 あるいは"100/10"のようにイーサネットのアダプタと思われる記述があるものを選択してください。
苦しい説明ですみません。
接続のプロパティの例(Windows2000)
接続のプロパティの例(Windows2000)

すると、次のような ダイアログ が開きます。

ルーター DHCPサーバー を利用して、ネットワーク設定を クライアント機 に割り当てている場合には WBEL3インストールのためのネットワーク構成の説明 CentOS3インストールのためのネットワーク構成の説明 WBEL4インストールのためのネットワーク構成の説明 CentOS4インストールのためのネットワーク構成の説明 CentOS5インストールのためのネットワーク構成の説明 、このように 「自動的に取得する」 の設定になっているはずです。
TCP/IPのプロパティの例(Windows2000)
TCP/IPのプロパティの例(Windows2000)

ここで、 "次のDNSサーバーのアドレスを使う(E)" にチェックを入れ、 構築中のLinuxサーバー のIPアドレスを入力してください。

Windows98、95は違う形式のダイアログが表示されますが、この場合は "DNS設定" のタブを選んで同様に設定してください。
DNSサーバーを指定する例(Windows2000)
DNSサーバーを指定する例(Windows2000)

入力が終わったら、 OK をクリックます。ダイアログが閉じたら、 "接続のプロパティ" も同様に OK ボタンをクリックして閉じます。

お使いの環境によっては、ここで再起動を求められることがありますが、その場合は再起動してください。

MacintoshOSの場合のDNS設定の方法

MacOSX の場合は、 "システム環境設定"→"ネットワーク" を開き、通常は "表示:" 内蔵Ethetnet を選択します。

表示されたダイアログの "DNSサーバ:" 構築中のLinuxサーバー のIPアドレスを入力し、 今すぐ適用 ボタンをクリックします。

MacOS9 及びそれ以前の場合は、 "コントロールパネル"→"TCP/IP" を開き、表示されたダイアログの "ネームサーバアドレス:" 構築中のLinuxサーバー のIPアドレスを入力します。

OldMacのDNSサーバー設定の例
OldMacのDNSサーバー設定の例

入力が終わったら、ダイアログのクローズボックスをクリックして内容を保存します。

BINDの起動と動作確認

まずは、 DNSサーバー の設定を変更した クライアント機 から、色々ネットワークに接続してみてください。

WindowsOS MacOS のファイル共有は問題なく使えるはずですが、インターネットを利用するweb コンテンツ の閲覧やメールの送受信はうまくいかないはずです。

理由はいうまでもなく、クライアント機が参照するDNSサーバーがまだ稼動していないため、 名前解決 を行うことができないためです。

あたりまえのことですが、ここではまだ IPアドレス "192.168.100.11" で接続します。
もちろんSSHクライアントからではなく、実機を直接操作してもかまいません。

では、クライアント機から SSHクライアント 構築中のLinuxサーバー に接続して、 BIND を起動してみましょう。

BINDの起動は、 root アカウント ログイン して、次のように コマンド を実行します。

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

そしてもう一度、クライアント機からインターネットに接続してみてください。

今度は何の問題もなくwebコンテンツの閲覧やメールの送受信ができるはずです。

WBEL CentOS インストール されているBINDは、 デフォルト DNS キャッシュ サーバー として働きます DNSキャッシュの説明 から、何の設定もしなくても「一応使える」訳です。

さて、現在の状態を図で示すと、以下のようになります。

LAN内のDNSキャッシュサーバーの動作
LAN内のDNSキャッシュサーバーの動作

もちろん、まだこの状態では 構築中のLinuxサーバー 自身の名前解決、正確にいうと サブネット 内の ホスト の名前解決は全く行われていません。それはこれから構築してゆくことになります。

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


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