投稿日:2004年08月04日 作成鷹の巣

No.16973 LAN内のDNSが正常に動かない。



LAN内のDNSが正常に動かない。

No.16973 投稿時間:2004年08月04日(Wed) 13:46 投稿者名:IMAT URL:

レンタルしているWEBサーバのテスト用のサイトを、LAN内に構築しようとしているのですが
VirtualHostを使っているので、DNSサーバを立てましたが、クライアントからうまく見え
ません。サーバのOSはRedHat9です。
現象としては、クライアント(windows2k)からCNAMEで定義しているところに、pingを
飛ばすと、Unknown host といわれてしまいます。
A で定義しているところは、ちゃんと見えます。
サーバからは自分自身の、CNAMEで定義しているところはちゃんとみえますので、定義自体は
間違っていない様に思われるのですが、クライアントからうまく行きません。
クライアントのDNSは一番上にLAN内のサーバを指定しています。
どのような原因が考えられるでしょうか。
お心当たりのある方お願いします。


試しに CNAMEをやめて 全部 A で定義してみたら?

No.16974 投稿時間:2004年08月04日(Wed) 14:19 投稿者名:stranger URL:

> レンタルしているWEBサーバのテスト用のサイトを、LAN内に構築しようとしているのですが
> VirtualHostを使っているので、DNSサーバを立てましたが、クライアントからうまく見え
> ません。サーバのOSはRedHat9です。
> 現象としては、クライアント(windows2k)からCNAMEで定義しているところに、pingを
> 飛ばすと、Unknown host といわれてしまいます。
> A で定義しているところは、ちゃんと見えます。
> サーバからは自分自身の、CNAMEで定義しているところはちゃんとみえますので、定義自体は
> 間違っていない様に思われるのですが、クライアントからうまく行きません。
> クライアントのDNSは一番上にLAN内のサーバを指定しています。
> どのような原因が考えられるでしょうか。
> お心当たりのある方お願いします。

試しに CNAMEをやめて 全部 A で定義してみたら?


どうもサーバ側ではなくクライアントの問題のようです。

No.16975 投稿時間:2004年08月04日(Wed) 16:48 投稿者名:IMAT URL:

stranger様 ありがとうございます。
いろいろやってみたのですが、どうもサーバ側ではなくクライアントの問題のようです。
クライアントで試したことは
・IPアドレスを手動で設定、にするとうまく行く。
・DHCPサーバを使うと、DNSサーバを設定していてもうまく行かない。
という状況で、ただし ipconfig /all でDNSサーバを見ると、ちゃんと目的の
DNSサーバが表示されているようです。この表示は、信用できないのでしょうか。
WindowsMeで似たようなことをやったときは、うまく行ったような気がしたのですが


上手くいくほうほうでやれば良いのでは?

No.16976 投稿時間:2004年08月04日(Wed) 17:23 投稿者名:stranger URL:

> stranger様 ありがとうございます。
> いろいろやってみたのですが、どうもサーバ側ではなくクライアントの問題のようです。
> クライアントで試したことは
> ・IPアドレスを手動で設定、にするとうまく行く。
> ・DHCPサーバを使うと、DNSサーバを設定していてもうまく行かない。
> という状況で、ただし ipconfig /all でDNSサーバを見ると、ちゃんと目的の
> DNSサーバが表示されているようです。この表示は、信用できないのでしょうか。
> WindowsMeで似たようなことをやったときは、うまく行ったような気がしたのですが

あとから情報を追加されてどうかときかれても?
上手くいくほうほうでやれば良いのでは?


グローバル/プライベートの空間をきっちり区分けして、調べてください。

No.16988 投稿時間:2004年08月08日(Sun) 02:49 投稿者名:帯鯖 URL:

帯鯖@名古屋です。


問合せの際のパケットのシーケンス(流れ)を、
グローバル/プライベートの空間をきっちり区分けして、調べてください。

また、RedHat 9 でしたら、おそらく BIND 9.x かと思います。
内向き/外向きの設定は正しく行なわれているか、確認してください。



> レンタルしているWEBサーバのテスト用のサイトを、LAN内に構築しようとしているのですが
> VirtualHostを使っているので、DNSサーバを立てましたが、クライアントからうまく見え
> ません。サーバのOSはRedHat9です。
> 現象としては、クライアント(windows2k)からCNAMEで定義しているところに、pingを
> 飛ばすと、Unknown host といわれてしまいます。
> A で定義しているところは、ちゃんと見えます。
> サーバからは自分自身の、CNAMEで定義しているところはちゃんとみえますので、定義自体は
> 間違っていない様に思われるのですが、クライアントからうまく行きません。
> クライアントのDNSは一番上にLAN内のサーバを指定しています。
> どのような原因が考えられるでしょうか。
> お心当たりのある方お願いします。


クライアントは、なぜ先に指定してあるLAN内のDNSを使わず、2番目のISPの物を先に使うのか?

No.16992 投稿時間:2004年08月09日(Mon) 16:33 投稿者名:IMAT URL:

帯鯖様 フォローありがとうございます。
色々トライしたので、少し混乱しているところもあるのですが、現状分かったことは
・クライアント側に,LAN内に立てたDNSのみを指定した場合、LAN内のテスト用サーバは正しく見える。
但し、インターネットのリソースを見るのは、名前解決にかなり時間がかかる。
・クライアント側に,LAN内に立てたDNS、ISPのDNSの順に指定した場合、LAN内のテスト用サーバは
Unknown host となってしまう。但し、インターネットのリソースは、普通に見える。
・サーバでmozillaを使った場合も、名前解決にすこし時間がかかる。(クライアントほどではない)
というような状況に見えます。rndc dumpdbで見ると、ちゃんとキャッシュはあるようです(yahoo等)
forwarders には、ISPのDNSアドレスを指定してあります。LAN外のIPアドレスを指定しているのは
ここだけです。

パケットの流れを見るのは、何かツールがあるのでしょうか、tracertで見ても名前解決のところは
表示されないようです。クライアントからは、yahoo.co.jpをやってみると
Unable to resolve targetとなりますが、不思議にpingは通ります。
サーバからtracerouteを実行すると、ちゃんと通るようです。
問題点として、LAN外の名前解決の応答がなぜ遅いのか?
クライアントは、なぜ先に指定してあるLAN内のDNSを使わず、2番目のISPの物を先に使うのか?

内向き/外向きの設定とは、viewを使うということでしょうか。
外部からこのDNSを見にくることは想定していないので、特に指定はしていませんが、
必須なのでしょうか。
よろしくお願いします。

> 帯鯖@名古屋です。
>
>
> 問合せの際のパケットのシーケンス(流れ)を、
> グローバル/プライベートの空間をきっちり区分けして、調べてください。
>
> また、RedHat 9 でしたら、おそらく BIND 9.x かと思います。
> 内向き/外向きの設定は正しく行なわれているか、確認してください。
>


動作確認は、nslookupかhostかdigコマンドのどれかで調べる。

No.16993 投稿時間:2004年08月09日(Mon) 20:16 投稿者名:サンバ URL:

DNSが正しく動くかを確認するのは
nslookup host dig のどれかで調べるのです
インターネットエクスプローラーで確認するものではありませぬ。


すでに調べております。

No.16995 投稿時間:2004年08月10日(Tue) 09:16 投稿者名:IMAT URL:

サンバ様 ご指摘ありがとうございます。
おっしゃるとおり、サーバ側でdigではすでに調べており、正しい応答を得ております。
クライアント側でも、nslookupでは調べており、これもLAN内のCNAMEで定義した
リソースについて正しい応答を得ています。ただ、pingではUnknown hostになると
いう奇妙な結果になっております。また、外部のリソースについては、nslookupの応
答に時間がかかるという現象になっています。

> DNSが正しく動くかを確認するのは
> nslookup host dig のどれかで調べるのです
> インターネットエクスプローラーで確認するものではありませぬ。


bindのforwardersの意味を考える。

No.16994 投稿時間:2004年08月10日(Tue) 07:04 投稿者名:stranger URL:

サーバのIPは手動で固定IPにする
bindのforwardersの意味を考える
あなたのDNSサーバで解決出来ないクエリ(外部のアドレスの解決要求)をISPのDNSに送ります
bindが正しく起動していれば、自分のDNSキャッシュの方が解決が速い場合がある
forwardersをした方が応答が速くなるという解説を"うのみ"にしない
named.confの設定 ゾーンファイルの設定をもう一度考える
外部からのクエリ要求を受けいれるのか?
内部だけで使えればよいのか?
外部だけ(公開するもの)、内部だけ(公開しないもの)と分けるのか(viewオプション)
bindのオプションは設定しない(デフォルト)の場合、ALLになっている場合があるので注意
bind9の設定方法は、複数公開されていると思います
redhat9の公式解説ならこちら
http://www.jp.redhat.com/support/9/
具体例は自分で探して下さい

dnsがうまく機能してないときに、ブラウザを使えば
間違った情報がブラウザに残ります
named.confでlogの設定をしてなければ /var/log/messagesに
bindの起動ログが記録されていると思うので確かめる
サンバさんのレスのようにdigなどのコマンドを使って
DNSが機能するか確かめる
その後ブラウザで「再読み込み」をする


DNSサーバで解決出来ないクエリとは、どこまでのことを言うのでしょうか。

No.16996 投稿時間:2004年08月10日(Tue) 10:41 投稿者名:IMAT URL:

stranger様 レスありがとうございます。
> サーバのIPは手動で固定IPにする
固定IPになっております。

> bindのforwardersの意味を考える
> あなたのDNSサーバで解決出来ないクエリ(外部のアドレスの解決要求)をISPのDNSに送ります
> bindが正しく起動していれば、自分のDNSキャッシュの方が解決が速い場合がある
> forwardersをした方が応答が速くなるという解説を"うのみ"にしない
DNSサーバで解決出来ないクエリとは、どこまでのことを言うのでしょうか
1.自分のゾーンファイルにない
2.自分のキャッシュにない
ということでしょうか、最終的にはhint(named.ca)を使って、解決するところまで
行くのでしょうか

> named.confの設定 ゾーンファイルの設定をもう一度考える
> 外部からのクエリ要求を受けいれるのか?
> 内部だけで使えればよいのか?
> 外部だけ(公開するもの)、内部だけ(公開しないもの)と分けるのか(viewオプション)
このDNSサーバの目的は、Virtual Hostを使っているApacheサーバの為の、テストサイトを
LAN内に作るためのもので、内部だけのものです。外部からはルーター越えになるので、アクセス
されることは想定していません。

> bindのオプションは設定しない(デフォルト)の場合、ALLになっている場合があるので注意
現状optionsの設定は以下のようになっています。
options {
directory "/var/named";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
allow-transfer{192.168.xxx.0/24; localhost;};
allow-query{192.168.xxx.0/24; localhost;};
// allow-recursion{192.168.xxx.0/24; localhost;};

forwarders {
xxx.xxx.xxx.xxx; ISPのDNSサーバ
yyy.yyy.yyy.yyy;
};
};

> bind9の設定方法は、複数公開されていると思います
> redhat9の公式解説ならこちら
> http://www.jp.redhat.com/support/9/
> 具体例は自分で探して下さい
>
> dnsがうまく機能してないときに、ブラウザを使えば
> 間違った情報がブラウザに残ります
> named.confでlogの設定をしてなければ /var/log/messagesに
> bindの起動ログが記録されていると思うので確かめる
> サンバさんのレスのようにdigなどのコマンドを使って
> DNSが機能するか確かめる
> その後ブラウザで「再読み込み」をする
サーバからは、内部および外部のリソースとも正常に見えるので、bind自体は意図した
通りに動いているように思えます。問題は、Windows2Kクライアントから、このDNS
を使うと
1.このDNSのみを定義した場合、外部リソースの名前解決が非常に遅い
ゾーンファイルに定義したリソースには正常にアクセスできる。
外部リソースにアクセスすると、たとえDNSのキャッシュにあるものでも応答が非常にに遅い
2.このDNS、ISPのDNSの順に定義した場合、このDNSが使われないようにみえる
ゾーンファイルに定義したリソースがUnknown hostになる。この応答はかなり速いので、
ISPのDNSにネガティブキャッシュされているものが返されていると推察される。
ただ、nslookupでは、ゾーンファイルに定義したリソースに対し正常に応答があり、また
外部リソースに対しては、応答が非常に遅いので、このDNSが使われているようにみえます。
というような状況です。


ご参考まで

No.16997 投稿時間:2004年08月10日(Tue) 19:30 投稿者名:おやじ URL:http://www.aconus.com/~oyaji/

どういう風にDNSにアクセスしているかは、Etherealでパケットキャプチャすれば一目瞭然です。
なお、Win2K/XPでは DNS Clientサービス がデフォルトで起動しているので、一回検索してしまうとクライアントでキャッシュしてしまうので、こういう試験をするときは止めたほうがいいです。コンパネのサービスで簡単に止められます。
現状では、コマンドプロンプトで ipconfig /displaydns とやると、づらづらとキャッシュしているデータがでてくるはず。ipconfig /flushdns で消せますが、毎回やるのも大変なので、試験中はDNS Clientサービスを停止したほうがいいでしょう。


グローバル、プライベートをまたがるパケットのシーケンス。

No.17000 投稿時間:2004年08月11日(Wed) 00:47 投稿者名:帯鯖 URL:

帯鯖@名古屋です。

# おやじさん、ご無沙汰です。

およそ的を絞れました。

1. LAN 内の DNS の反応が遅く、ISP(セカンダリ側)に切り替わってしまう。

よく起こる事象です。
名前解決の基本シーケンスをもとに、2台の DNS が物理的にどの階層にあるかを明確にすれば、答えは見えます。

2. ISP(セカンダリ側)DNS から "unknown"

そりゃそうです。
グローバルな世界にいるあなたは、http://プライベートIP でコンテンツを見ることができますか?

2. ping が通じない

ISP(セカンダリ側)の DNS を経由した場合、グローバルな世界を経由して
192.168.x.x に ping すると、どうなりますか?


ちょっと先走ってしまいました。。。

何度も言いますが、「グローバル」「プライベート」の区分を明確にして、
パケットのシーケンスを見直してください。


> どういう風にDNSにアクセスしているかは、Etherealでパケットキャプチャすれば一目瞭然です。
> なお、Win2K/XPでは DNS Clientサービス がデフォルトで起動しているので、一回検索してしまうとクライアントでキャッシュしてしまうので、こういう試験をするときは止めたほうがいいです。コンパネのサービスで簡単に止められます。
> 現状では、コマンドプロンプトで ipconfig /displaydns とやると、づらづらとキャッシュしているデータがでてくるはず。ipconfig /flushdns で消せますが、毎回やるのも大変なので、試験中はDNS Clientサービスを停止したほうがいいでしょう。


ご参考まで。

No.17003 投稿時間:2004年08月11日(Wed) 09:56 投稿者名:IMAT URL:

おやじ様、帯鯖様 ありがとうございます。
> どういう風にDNSにアクセスしているかは、Etherealでパケットキャプチャすれば一目瞭然です。
早速ダウンロードして試してみます。情報ありがとうございました。

> なお、Win2K/XPでは DNS Clientサービス がデフォルトで起動しているので、一回検索してしまうとクライアントでキャッシュしてしまうので、こういう試験をするときは止めたほうがいいです。コンパネのサービスで簡単に止められます。
> 現状では、コマンドプロンプトで ipconfig /displaydns とやると、づらづらとキャッシュしているデータがでてくるはず。ipconfig /flushdns で消せますが、毎回やるのも大変なので、試験中はDNS Clientサービスを停止したほうがいいでしょう。
毎回やっていました。サービスをとめてやって見ます。

> およそ的を絞れました。
>
> 1. LAN 内の DNS の反応が遅く、ISP(セカンダリ側)に切り替わってしまう。
>
> よく起こる事象です。
> 名前解決の基本シーケンスをもとに、2台の DNS が物理的にどの階層にあるかを明確にすれば、答えは見えます。
LAN 内の DNS の反応が遅い理由ですが、外部のDNSに対する問合せがタイムアウトするということくらいしか
思いつきませんが、それでもDNSにキャッシュされているものも遅い、という理由がわかりません。
ルーターで53番をLAN内のDNSに通す必要がある、ということなのでしょうか。
LAN内のDNSが外部から参照されることは想定していないので、やっていなかったのですが。


Etherealで見たところ。

No.17005 投稿時間:2004年08月11日(Wed) 12:33 投稿者名:IMAT URL:

DNS Clientサービス を止めた場合、最初にLAN内のDNSを見に行き、応答がない場合
1秒後に2番目のDNSを見に行くようです。
なので、この場合図らずも意図したような結果に近い状況が得られました。
ありがとうございました。
DNS Clientサービスを動かしている場合は、最初から2番目のDNSを見に行ってしまうようです。
結局は、LAN内のDNSの外部リソースに関する名前解決の応答が、非常に遅いことが原因のようです。


解決しました。

No.17008 投稿時間:2004年08月11日(Wed) 15:12 投稿者名:IMAT URL:

サーバ側でtcpdumpを使って53番をキャプチャしたところ、なぜか分かりませんが
forwardersに定義してあるサーバからの応答がない様でしたので、forwarders
を削除したところ、意図したように動くようになりました。
いろいろご指摘いただいた皆様、ありがとうございました。


|目次|掲示板|過去ログ目次|▲頁先頭|