このページでは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の動作確認

BINDの DNSキャッシュ としての動作確認は、 BIND(〜9.3.x)の起動と動作チェック BIND(9.7.x〜)の起動と動作チェック で既に行っているはずですので、ここでは 構築中のLinuxサーバー に対する プライベートIPアドレス への 名前解決 が正常に行われるかどうかを確認します。

もちろん、 Webブラウザ でwebページを表示させてみたり、メールの送受信を行ったり、という操作を、プライベートIPアドレスではなく "www.obenri.com" "mail.obenri.com" のような FQDN で操作してみることで、間接的に正常性を知ることはできます。

しかし、それらの方法では全ての動作の正しさを確認することはできませんし、また、正常ではない場合の原因をつかむことはできませんから、あまり良い方法とはいえないでしょう。

はやりここはシステム管理者たるもの、きちんと動作チェック用の コマンド を利用するべきです。

WBEL CentOS には デフォルト で、名前解決をチェックするための コマンド として、 host dig nslookup の三つが インストール されています。

これらはいずれも、 DNSサーバー に対して FQDN IPアドレス で問い合わせを行い、その結果を表示するコマンドです。

それぞれのコマンドは使い方や書式が異なりますが、得られる情報に大差はありませんから好みで使い分ければよいでしょう。

ここでは例としてhostコマンドを使って説明します。

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


"構築中のLinuxサーバー自身での確認

まず、 DNSサーバー である 構築中のLinuxサーバー 自身からの動作確認をしてみましょう。

まず、 構築中のLinuxサーバー に適当な ユーザーアカウント ログイン します。

もちろん、直接実機にログインしても、 SSHクライアント を使って同じ サブネット の別の ホスト機 からログインしてもかまいません。

デフォルトの設定に対するチェック

まず、"localhost"、"localhost.localdomain"に対する正引きと、 ループバックアドレス に対する逆引きの 名前解決 をチェックしましょう。

次のようにコマンドを実行してみてください。設定に間違いがなければ、直ちに以下のような結果が表示されるはずです。

[tanaka@web1 ~]$ host -a localhostEnter
Trying "localhost.obenri.com"
Trying "localhost"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17892
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 2

;; QUESTION SECTION:
;localhost.           IN   ANY

;; ANSWER SECTION:
localhost.       86400  IN   SOA   localhost. root.localhost. 42 10800 900 604800 86400
localhost.       86400  IN   NS   localhost.
localhost.       86400  IN   A    127.0.0.1
localhost.       86400  IN   AAAA  ::1


;; ADDITIONAL SECTION:
localhost.       86400  IN   A    127.0.0.1
localhost.       86400  IN   AAAA  ::1

Received 170 bytes from 127.0.0.1#53 in 24 ms
[tanaka@web1 ~]$ host -a localhost.localdomainEnter
Trying "localhost.localdomain"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39584
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;localhost.localdomain.     IN   ANY

;; ANSWER SECTION:
localhost.localdomain. 86400  IN   A    127.0.0.1

;; AUTHORITY SECTION:
localdomain.      86400  IN   NS   localhost.localdomain.

Received 69 bytes from 127.0.0.1#53 in 43 ms
[tanaka@web1 ~]$ host -a 127.0.0.1Enter
Trying "1.0.0.127.in-addr.arpa"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7280
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; QUESTION SECTION:
;1.0.0.127.in-addr.arpa.        IN   PTR

;; ANSWER SECTION:
1.0.0.127.in-addr.arpa. 86400  IN   PTR   localhost.

;; AUTHORITY SECTION:
0.0.127.in-addr.arpa.  86400  IN   NS   localhost.

;; ADDITIONAL SECTION:
localhost.       86400  IN   A    127.0.0.1
localhost.       86400  IN   AAAA  ::1

Received 121 bytes from 127.0.0.1#53 in 61 ms
[tanaka@web1 ~]$

結果の中で、 で示す部分が" NOERROR "になっていれば、 で示す部分が、該当するゾーンファイルの記述 4.localhost.zone〜ローカルホストの設定へ 4'.localdomain.zone〜ローカルホスト(DNS名)の設定へ 5.named.local〜ループバックアドレスの逆引きゾーンファイルの設定へ と一致しているはずです。

なかなか結果が表示されないとき、あるいは、

[tanaka@web1 ~]$ host -a localhostEnter
Trying "localhost.obenri.com"
Trying "localhost"
;; connection timed out; no servers could be reached
[tanaka@web1 ~]$

のような結果が返ってくるときは、 named に名前解決の要求そのものが届いていません。

今は自 ホスト に対するチェックを行っていますから、通信経路の障害は起こりえません。

また、この部分の設定については、ブートファイル "named.conf" /etc/named.confの設定(〜9.3.x) 、及びゾーンファイル "localhost.zone /var/named/localhost.zoneの設定 "localdomain.zone" /var/named/localdomain.zoneの設定 "named.local" /var/named/named.localの設定 、はいずれも修正はしていないはずですから、namedに関する設定内容が間違っているということもありません。

ということはこの不具合の原因は、

構築中のLinuxサーバー named が起動していない。

"/etc/resolv.conf"の記述に誤りがある。

のいずれかです。もう一度、 namedの起動とコントロール /etc/resolv.confの設定 を参考に設定を確認してください。

"obenri.com"に対する正引きのチェック

次に、新たに作成したゾーン "obenri.com" に対してチェックを行います。

[tanaka@web1 ~]$ host -a obenri.comEnter
Trying "obenri.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15860
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 2

;; QUESTION SECTION:
;obenri.com.          IN   ANY

;; ANSWER SECTION:
obenri.com.       86400  IN   SOA   web1.obenri.com. tanaka.obenri.com. 2005111401 10800 900 604800 86400
obenri.com.       86400  IN   NS   web1.obenri.com.
obenri.com.       86400  IN   MX   10 mail.obenri.com.
obenri.com.       86400  IN   A    192.168.100.11


;; ADDITIONAL SECTION:
web1.obenri.com.    86400  IN   A    192.168.100.11
mail.obenri.com.    86400  IN   A    192.168.100.11

Received 159 bytes from 127.0.0.1#53 in 1 ms
[tanaka@web1 ~]$ host obenri.comEnter
obenri.com has address 192.168.100.11
[tanaka@web1 ~]$ host web1.obenri.comEnter
web1.obenri.com has address 192.168.100.11
[tanaka@web1 ~]$ host mail.obenri.comEnter
mail.obenri.com has address 192.168.100.11
[tanaka@web1 ~]$ host www.obenri.comEnter
www.obenri.com has address 192.168.100.11
[tanaka@web1 ~]$ host router.obenri.comEnter
www.obenri.com has address 192.168.100.1
[tanaka@web1 ~]$

この結果の中で、 で示す部分が" NOERROR "になっていれば、 で示す部分が、該当するゾーンファイル "obenri.com.zone" の記述 4.localhost.zone〜ローカルホストの設定へ と一致しているはずです。

もしも内容が一致しないときは、書式に誤りはありませんが設定そのものに間違いがあります。もう一度内容を確認してください。

また、

[tanaka@web1 ~]$ host -a obenri.comEnter
Trying "obenri.com"
Host obenri.com not found: 2(SERVFAIL)
Received 28 bytes from 127.0.0.1#53 in 0 ms
[tanaka@web1 ~]$

のように、名前解決結果が得られない場合、 named が起動時にゾーンファイル "obenri.com.zone" を読み込むことができなかったことを示しています。

namedはブートファイル "named.conf" に書式上の誤りさえなければ、設定に誤りがあってゾーンファイルを読み込むことができなくても、起動時にエラーは出ません。

従ってこういう不具合の原因は、

ブートファイル中のゾーンファイル名と、実際のゾーンファイル名、または パス 名が一致していない。またはゾーンファイルの パーミッション が正しく設定されていない

ということになります。

ですから、ブートファイルの "options" "directory" の部分 named.confのoptionsの設定(〜9.3.x) を変更していなければ、 named.confのobenri.com設定(〜9.3.x) の"file命令"におけるファイル名の記述と、 obenri.com.zoneの設定 で作成したファイル名が一致していないことが原因として考えられます。

あるいは、ゾーンファイルを作成したときの方法によっては、「 システムアカウント named で読み込めない」パーミッションになっているかもしれません namedを起動するアカウントについて

また、

[tanaka@web1 ~]$ host -a obenri.comEnter
Trying "obenri.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7805
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;obenri.com.          IN   ANY

;; ANSWER SECTION:
obenri.com.       172800 IN   NS   ns1.mydns.jp.
obenri.com.       172800 IN   NS   ns0.mydns.jp.

;; AUTHORITY SECTION:
obenri.com.       172800 IN   NS   ns1.mydns.jp.
obenri.com.       172800 IN   NS   ns0.mydns.jp.

;; ADDITIONAL SECTION:
ns0.mydns.jp.      54601  IN   A    210.197.74.200
ns1.mydns.jp.      54601  IN   A    210.197.74.201

Received 132 bytes from 127.0.0.1#53 in 250 ms
[tanaka@web1 ~]$ host obenri.comEnter
obenri.com has address 218.218.237.xxx
[tanaka@web1 ~]$ host web1.obenri.comEnter
web1.obenri.com has address 218.218.237.xxx
[tanaka@web1 ~]$ host mail.obenri.comEnter
mail.obenri.com has address 218.218.237.xxx
[tanaka@web1 ~]$ host www.obenri.comEnter
www.obenri.com has address 218.218.237.xxx
[tanaka@web1 ~]$ host router.obenri.comEnter
Host router.obenri.com not found: 3(NXDOMAIN)
[tanaka@web1 ~]$

のように WAN 空間へ 名前解決 の問い合わせが行われてしまい、正引きの結果が グローバルIPアドレス で返ってくるときは、 構築中のLinuxサーバー が「"obenri.com"に対する権威ある DNSサーバー 権威あるDNSサーバーとは 」 として機能していません。

つまりこの場合は、ブートファイル "named.conf" の中のゾーン名の宣言"obenri.com"が正しく書かれていないということになります。

以上について正しい結果が得られるようになるまで、設定を修正してください。

"obenri.com" 以外のドメイン名に対する設定を行っている場合も同様のチェック、修正を行ってください。

設定を修正したら再チェックを行う前に、設定を反映させる作業 namedの再起動など を忘れずに行ってください。

"192.168.100.0/24"に対する逆引きのチェック

新たに作成したゾーン "100.168.192.in-addr.apra" に対してチェックを行います。

[tanaka@web1 ~]$ host -a 192.168.100.11Enter
Trying "11.100.168.192.in-addr.arpa"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19587
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;11.100.168.192.in-addr.arpa.  IN   PTR

;; ANSWER SECTION:
11.100.168.192.in-addr.arpa. 86400 IN  PTR   web1.obenri.com.

;; AUTHORITY SECTION:
100.168.192.in-addr.arpa. 86400 IN   NS   web1.obenri.com.

;; ADDITIONAL SECTION:
web1.obenri.com.    86400  IN   A    192.168.100.11

Received 104 bytes from 127.0.0.1#53 in 54 ms
[tanaka@web1 ~]$ host -a 192.168.100.1Enter
Trying "1.100.168.192.in-addr.arpa"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6723
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;1.100.168.192.in-addr.arpa.  IN   PTR

;; ANSWER SECTION:
1.100.168.192.in-addr.arpa. 86400 IN  PTR   router.obenri.com.

;; AUTHORITY SECTION:
100.168.192.in-addr.arpa. 86400 IN   NS   web1.obenri.com.

;; ADDITIONAL SECTION:
web1.obenri.com.    86400  IN   A    192.168.100.11

Received 110 bytes from 127.0.0.1#53 in 70 ms
[tanaka@web1 ~]$

この結果の中で、 で示す部分が" NOERROR "になっていれば、 で示す部分が、該当するゾーンファイル "100.168.192.in-addr.arpa.zone" の記述 4.localhost.zone〜ローカルホストの設定へ と一致しているはずです。

もしも内容が一致しないときは、書式に誤りはありませんが設定そのものに間違いがあります。もう一度内容を確認してください。

また、

[tanaka@web1 ~]$ host -a 192.168.100.11Enter
Trying "11.100.168.192.in-addr.arpa"
Host 11.100.168.192.in-addr.arpa not found: 2(SERVFAIL)
Received 45 bytes from 127.0.0.1#53 in 3 ms
[tanaka@web1 ~]$

のようなメッセージが出て、名前解決結果が得られない場合、 named が起動時にゾーンファイル "100.168.192.in-addr.arpa.zone" を読み込むことができなかったことを示しています。

namedはブートファイル "named.conf" に書式上の誤りさえなければ、設定に誤りがあってゾーンファイルを読み込むことができなくても、起動時にエラーは出ません。

従ってこういう不具合の原因は、

ブートファイル中のゾーンファイル名と、実際のゾーンファイル名、または パス 名が一致していない。またはゾーンファイルの パーミッション が正しく設定されていない

ということになります。

ですから、ブートファイルの "options" "directory" の部分 named.confのoptionsの設定(〜9.3.x) を変更していなければ、 named.confのサブネット設定(〜9.3.x) の"file命令"におけるファイル名の記述と、 100.168.192.in-addr.arpa.zoneの設定 で作成したファイル名が一致していないことが原因として考えられます。

あるいは、ゾーンファイルを作成したときの方法によっては、「 システムアカウント named で読み込めない」パーミッションになっているかもしれません namedを起動するアカウントについて

また、

[tanaka@web1 ~]$ host -a 192.168.100.11Enter
Trying "11.100.168.192.in-addr.arpa"
Host 11.100.168.192.in-addr.arpa not found: 3(NXDOMAIN)
Received 122 bytes from 127.0.0.1#53 in 811 ms
[tanaka@web1 ~]$

のような結果が表示されるときは、 構築中のLinuxサーバー が「"192.168.100.0/24"に対する権威ある DNSサーバー 権威あるDNSサーバーとは 」 として機能していません。

つまりこの場合は、ブートファイル "named.conf" の中のゾーン名の宣言"100.168.192.in-addr.arpa"が正しく書かれていないということになります。

以上について正しい結果が得られるようになるまで、設定を修正してください。

設定を修正したら再チェックを行う前に、設定を反映させる作業 namedの再起動など を忘れずに行ってください。

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


このページの先頭へ↑

LAN内の他のホスト機からの動作確認

構築中のLinuxサーバー での動作確認がきちんとできていれば、 LAN 内の同一の サブネット に設置された ホスト機 からも問題なく DNSサーバー が利用できるはずです。

まず、 ホスト機の参照するDNSサーバーを指定する(〜BIND9.3.x) ホスト機の参照するDNSサーバーを指定する(BIND9.7.x〜) を参考に、各ホスト機が参照するDNSサーバーとして 構築中のLinuxサーバー を指定してください。

また、 ホスト機のhostsファイルの設定 hostsファイル 構築中のLinuxサーバー に対して 名前解決 できるように修正している場合は、これを元の設定に戻してください。

設定を変更したり、修正したりした後は、各ホスト機に古い DNSキャッシュ の情報が残ったままになってしまうことがありますから、必ず再起動してください。

準備ができたら、お使いのホスト機が Windows98 Me 2000 XP 、及び MacOSX の場合は、 コマンド を使ってテストしてみましょう。

Windows98の場合は、

スタート プログラム(P) MS-DOS プロンプト

WindowsMe、2000、XPの場合は、

スタート プログラム(P) アクセサリ コマンドプロンプト または MS-DOSプロンプト)

の順でメニューを開きます。MacOSXの場合は、

"起動ディスク"→"アプリケーション"→"ユーティリティ"→"ターミナル"

の順でフォルダを開きます。

するとそれぞれの OS のコマンド シェル 画面が開きます。

例:Windows2000のコマンドシェル画面
例:Windows2000のコマンドシェル画面

画面が開いたら、次のように ping コマンドでDNSサーバーの動作を確認してみましょう。

pingの実行例(Windows2000)
pingの実行例(Windows2000)

pingコマンドで問い合わせを行った FQDN に対して、上の例のように、正引きの名前解決結果の IPアドレス に対して正常に応答があればOKです。

既に上記で説明した 構築中のLinuxサーバー 自身での動作確認がとれていれば、これ以上のチェックは必要ありませんが、勉強の意味で他のFQDNやIPアドレスに対してpingコマンドを実行してみても良いでしょう。

もしも応答が得られない場合は、そのホスト機のデフォルトのDNSサーバーの指定が "192.168.100.11" に設定されていないか、あるいはネットワーク機能そのものに異常がありますので、もう一度設定を確認してください。

また、ホスト機のOSの種類によっては nslookup コマンドで名前解決のチェックを行うこともできますから、これも実行してみると良いでしょう。

nslookupの実行例(Windows2000)
nslookupの実行例(Windows2000)

Windows95 MacOS9 以前のOSでは、このようなネットワークコマンドでのチェックができないケースが大半ですので、 構築中のLinuxサーバー Webサーバー Apache に接続してみて動作確認を行いましょう。

まず、 構築中のLinuxサーバー のApacheを起動してください。

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

そして、参照する DNSサーバー の設定を行った サブネット 内の任意の ホスト から、 構築中のLinuxサーバー プライベートIPアドレス を使って、

"http://192.168.100.11/"

にアクセスしてみてください。以下のようなのテストページが表示されれば、Webサーバーは正常に機能していることになります。

サブネット内から接続したApache2のテストページ
サブネット内から接続したApache2のテストページ

これと同じページが、

"http://www.obenri.com/"

で表示されればOKです。

また、 バーチャルホスト の設定はまだ行っていませんから、同じページが

"http://web1.obenri.com/

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

"http://mail.obenri.com/

でも見ることができるはずです。

また、 "ugegege.com" に対する設定が行われているときは、ゾーンファイル "ugegege.com.zone" 内で、 "www.ugegege.com.zone" がIPアドレス "192.168.100.11" に名前解決されるように記述されていれば、

"http://www.ugegege.com/

でも同じページが表示されるはずです。

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


このページの先頭へ↑

SSHクライアントからFQDNで接続する

DNSサーバーは クライアント アプリケーション でも普遍的に利用できますから、例えば SSHクライアント から 構築中のLinuxサーバー への接続 SSHクライアントでサーバーに接続する(WBEL3) SSHクライアントでサーバーに接続する(CentOS3) SSHクライアントでサーバーに接続する(WBEL4) SSHクライアントでサーバーに接続する(CentOS4) SSHクライアントでサーバーに接続する(CentOS5)

IPアドレスでSSH接続
IPアドレスでSSH接続

のように IPアドレス ではなく、

FQDNでSSH接続
FQDNでSSH接続

のように FQDN でも接続できるはずです。

もちろん、 "192.168.100.11" 名前解決 されるFQDNであればすべてOKのはずですので、 "www.obenri.com" "mail.obenri.com" 、更に "ugegege.com" に対する設定が行われているときは、 "www.ugegege.com.zone" などでも接続できるようになっているはずです。

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


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