- PR -

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

投稿者投稿内容
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-04-14 00:14
引用:

Linux側からはルータのIPを指定して、ルータ側でプロバイダのDNSを参照するという事でした。


ごめんなさい、ここはちょっと意味がわかりません。

ところで、誤解があると申し訳ないので補足しますと、
引用:

・ネットワーク的な問題
 forwardersに指定したDNSサーバへの疎通は?
 → “dig @DNSサーバ ドメイン名”等で適当に名前解決を試してみる


ここで、digコマンド中に @付きで指定しているDNSサーバは、named.conf の forwarders として設定したサーバのことです。(今回は 202.248.37.74 … つまり “dig @202.248.37.74 www.atmarkit.co.jp” 等のコマンドを試す)
今後 bind → 外部DNSサーバ で行われる通信と同等の事を、前もって手動で試しているわけですね。
これが timeout になる場合は、forwarders に指定すべきサーバが違うか、ルータ等含めネットワーク的な問題があるか…、ということになります。

ただ、あくまで「疎通」の確認ですから、
引用:

ローカルドメインでは問題なく返ってきますが、外部のドメインを指定すると
"connection timed out; no servers could be reached"
となってしまいます。


というのは、何か方法が違うように思います。(ドメインによって timeout になったりならなかったりはしない筈)
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2005-04-14 00:28
こんばんわ.

というか,localhost で bind 動かしているのに,
なぜ外部へ名前を訊きに行くのでしょうか?
angel様のご指摘にあるような設定は「bind にだけ効く」のであって,
Linux そのものはコブラ様のご指摘でもわかるように,
resolv.conf に設定する必要があります.
なので,今回の場合の nameserver は 127.0.0.1 で良いのでは? -> コブラ様

で,Linux -> 外部 DNS 間の通信を確認するために,
一時的に resolv.conf の nameserver を外部 DNS とすると,
ちゃんと名前は解決できますか? -> たろきち様
ここで名前を解決できないと,
bind を外部 DNS に forward させても名前は解決できないでしょう.
さらに,resolv.conf の nameserver を router にした場合は?
ここで名前を解決できれば,
bind の forward 先を router にすることで外部の名前を解決できるでしょう.
router なら解決できて,外部 DNS に訊きに行ったら解決できないなら,
router で NAT や NAPT をする必要があるのでは?
ここは Mattun様のご指摘にあるように,
Linux(bind)は外部の DNS に訊きに行けているのに,
外部 DNS 側が Linux の居場所がわからなくて答えを返せないのでしょう.

以上,ご参考までに.
たろきち
会議室デビュー日: 2005/04/13
投稿数: 5
投稿日時: 2005-04-14 02:55
Mattun様、angel様、コブラ様、kaz様ご返答頂きありがとうございます。
今回のレスで問題の解決が出来ましたので、作業報告をします。

コブラ様の
>/etc/resolv.conf にプロバイダの nameserver 指定
こちらにつきましては、"resolv.conf"のセカンダリに登録していましたので、nameserverの先頭に持っていきましたが、host等のユーティリティでエラーが返ってきました。ちなみに先頭はサーバのIPアドレスを入れていました。

その後、kaz様の127.0.0.1も設定しましたが、同じく"timed out"になりました。
angel様の例にあった"forwardersのDNSサーバでdig @202.248.37.74 www.atmarkit.co.jp"も試しましたが同じエラーが返ってきました。

その後、kaz様のおっしゃっていた"resolv.conf"のnameserverをルータのIPアドレスに指定したところ、linuxでDNSを引くことが出来ました。
ただ、クライアントPC(DNSはLinuxのIPアドレス)では解決出来ませんでした。
digでもルータのアドレスをDNSにして引くことができたので、
今度は"named.conf"のforwardersにルータを設定したところ、クライアントPCからでもDNSを引くことが出来ました。
resolv.confのnameserverに関しては色々試したり、しまいには空白でも試したりしましたが、結果変わらず見ることが出来ました。
ということは、resolv.confよりもforwardersの方が優先されると言うことでしょうか。

とにかく、問題が解決出来て助かりました。
お時間を割いて助言頂きました皆様、感謝しております。ありがとうございました。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2005-04-14 07:35
おはようございます.
引用:

たろきちさんの書き込み (2005-04-14 02:55) より:

今度は"named.conf"のforwardersにルータを設定したところ、クライアントPCからでもDNSを引くことが出来ました。
resolv.confのnameserverに関しては色々試したり、しまいには空白でも試したりしましたが、結果変わらず見ることが出来ました。
ということは、resolv.confよりもforwardersの方が優先されると言うことでしょうか。


resolv.conf は「Linux 自体の DNS client としての設定」です.
client PC が bind に訊きに行っている限り,
resolv.conf がどのように定義されていようと影響ありません.
なので,Linux 自身で名前解決が必要でなければ,
極端な書き方をすると定義しなくて良いはずです.
つまり resolv.conf と forwarders は連動しますが
優先云々という話ではありません.
つまり,
client PC -> bind -> forward 先の DNS
という順番なので,
resolv.conf で nameserver を 127.0.0.1 にすると
最初の client PC が Linux になるだけです.

以上,ご参考までに.

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