- PR -

BINDで外部への名前解決についての質問

投稿者投稿内容
たろきち
会議室デビュー日: 2005/04/13
投稿数: 5
投稿日時: 2005-04-13 16:59
はじめまして。

RedHat9を使ってBIND9の設定を昨日からしていたのですが、LAN内の名前解決は出来るのですが、試しに外部の有名なドメインを引こうとすると、
dig、host、nslookup共に"connection timed out; no servers could be reached"
とエラーが出てしまいます。
正引き、逆引き共に同じエラーが出ます。
pingも通らず、"unknown host"と返ってきます。
/var/log/messagesを見ても"running"と出て、特にエラーらしき文章は見当たりません。
おそらく何か設定が足りないのだと思うのですが、可能性のありそうなところをご教授頂ければ大変助かります。

環境は、
インターネット--モデム--ルーター--ハブにLinuxとクライアントPCが繋がっています。
                   
どうか宜しくお願いします。
Mattun
ぬし
会議室デビュー日: 2004/08/10
投稿数: 1391
投稿日時: 2005-04-13 17:13
ルータを介しているから、Linux上のBINDが外部のDNSへのクエリを送信しても
返信を受け取れないんでしょう。

・ルータで、LinuxサーバをDMZ上に配置するような構成を行う
・BINDで、ルータののDNSサーバへフォワードするような設定を行う
のいずれかで問題ないでしょう。

どちらがふさわしいかは、そのDNSサーバを何に使いたいのか次第でしょうか。
外部に公開する予定が無いのであれば、後者の選択が無難だと思います。

[ メッセージ編集済み 編集者: Mattun 編集日時 2005-04-13 17:42 ]
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-04-13 17:20
こんにちは。
ご質問の件ですが、設定よりも先に、たろきちさんがどのような構成を目指しているかが大事になります。
「外部の有名なドメインを引こうとすると」とあるので、リゾルバとしての動作をBINDに期待しているとすると、

(1) フルサービスリゾルバ(キャッシュサーバ)として動作
(2) 他リゾルバのフォワーダとしての動作

のどちらかの構成を採ることになります。
(1) であれば、ルートゾーンの type や“named.ca”ファイルの内容が問題になりますし、
(2) であれば、“forwarders”に指定した他サーバが問題になります。
どちらにしても、“recursion yes”は必須ですし…。
更に、bind9 では view を用いて、構成を複雑にすることもできますので…、言い出すとキリがありません。
設定ファイルの内容を載せるでも構わないので、その辺り整理されてはいかがでしょうか?
たろきち
会議室デビュー日: 2005/04/13
投稿数: 5
投稿日時: 2005-04-13 18:49
早速ご回答頂きましてありがとうございます!

Mattunさんとangelさんの問いの件ですが、私のやりたい事はクライアントPC(win2000)のDNS設定をLinuxのIPに指定して、名前解決をしようと思っていますが、Linux側では外部のドメインに関してはプロバイダのDNSを引きたいと思っています。
DMZ上に配置はしたくないです。外部のドメインはルータで指定しているDNSを参照するようにしたいです。
恐縮ですが、またよろしくお願いします。

分からないのでnamed.confの内容を載せておきます。
options {
directory "/var/named";
allow-query { 172.28.28.0/21; 127.0.0.1; };
allow-transfer { 172.28.28.0/21; 127.0.0.1; };
forwarders{ 202.248.37.74; };
version "Error";
};
controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
include "/etc/rndc.key";
logging {
channel default-log {
file "/var/log/named/named.log" versions 5 size 1m;
severity info;
print-time yes;
print-severity yes;
print-category yes;
};

category lame-servers { null; };
category default { default-log; };
};

zone "." IN {
type hint;
file "named.ca";
};

zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};

zone "example.com" IN {
type master;
file "example.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};

zone "28.28.172.in-addr.arpa" IN {
type master;
file "172.28.28.zone";
allow-update { none; };
};

(END)
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-04-13 19:18
引用:

たろきちさんの書き込み (2005-04-13 18:49) より:

Mattunさんとangelさんの問いの件ですが、私のやりたい事はクライアントPC(win2000)のDNS設定をLinuxのIPに指定して、名前解決をしようと思っていますが、Linux側では外部のドメインに関してはプロバイダのDNSを引きたいと思っています。
DMZ上に配置はしたくないです。外部のドメインはルータで指定しているDNSを参照するようにしたいです。


と、いうことであれば、私の提示した構成(2)ということになりそうですね。
それぞれ突っ込みを入れていくと、

・BINDの設定
 リゾルバとして使用するため、“recursion yes”が必須
 フォワーダのため、ルートゾーン(zone ".")の項目は不要
 フォワーダということなので、“forward-only”も気分的に付けたいところ

・ネットワーク的な問題
 forwardersに指定したDNSサーバへの疎通は?
 → “dig @DNSサーバ ドメイン名”等で適当に名前解決を試してみる
 ※ネットワークに関しては、使用しているルータとLANの構成が大きく影響します。
  上手く行かない場合は、ここから見直す必要ありです。

ところで、「プロバイダのDNS」と「ルータで指定しているDNS」と2種類あるのが若干気になるところですが…、まずは試してみるのが良いのではないでしょうか。
たろきち
会議室デビュー日: 2005/04/13
投稿数: 5
投稿日時: 2005-04-13 20:11
ありがとうございます、BINDの設定試してみました。

angelさんの記述の様にnamed.confの設定に"recursion yes"と"forward-only"追加し、ルートゾーンの項目を削除しdigを行いましたが、
ローカルドメインでは問題なく返ってきますが、外部のドメインを指定すると
"connection timed out; no servers could be reached"
となってしまいます。
やはりルータの設定に問題があるのでしょうか?
ルータ側では一応LinuxIPの#53と#953のポートは空けてみたのですが駄目でした。

もうしばらくお付き合いお願いします。
たろきち
会議室デビュー日: 2005/04/13
投稿数: 5
投稿日時: 2005-04-13 20:16
あと、「プロバイダのDNS」と「ルータで指定しているDNS」は同じIPです。
Linux側からはルータのIPを指定して、ルータ側でプロバイダのDNSを参照するという事でした。
誤解を招きましてすみません。
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2005-04-13 22:58
ただ単に /etc/resolv.conf にプロバイダの nameserver 指定しとらんだけちゃうのん?

スキルアップ/キャリアアップ(JOB@IT)