深夜?早朝?にお邪魔します。
DNS関連についてお知恵を頂きたく思い
書き込みさせていただいております。
環境ですが、おやじさんのHPを参考に内向きDNSサーバを設置しております。
目的はおやじさん同様に内向きにインターネットで使っているドメインで
サーバのプライベートアドレスを返す事でした。
試行錯誤の結果なんとか目的は果たせるようになったのですが
不意にインターネットで使っているドメインで繋がらなくなることが
発生しています。※IP直指定すると普通に繋がります。
またWindowsクライアント側を再起動すると繋がるようになるのでWindowsクライアント側の問題なのかなと想像しておりますが
ただ何が問題なのかまでは分からず途方に暮れている状態です。
もし心当たりがありましたら教えていただきたく思います。
WindowsクライアントOS:Windows XP
DNSサーバ:VineLinux3.2 BIND
他に必要な情報などありましたらご指摘いただければと思います。
> 試行錯誤の結果なんとか目的は果たせるようになったのですが
> 不意にインターネットで使っているドメインで繋がらなくなることが
> 発生しています。※IP直指定すると普通に繋がります。
ここで言う「インターネットで使っているドメイン」ということですよね。
ほかのドメインに関しては、自宅のDNSサーバはキャッシュ動作しているだけで、自分のドメインは内向きにマスタDNSとして動作しているので、少し動きが違うためはっきりしておかないとまずいです。
> またWindowsクライアント側を再起動すると繋がるようになるのでWindowsクライアント側の問題なのかなと想像しておりますが
> ただ何が問題なのかまでは分からず途方に暮れている状態です。
> もし心当たりがありましたら教えていただきたく思います。
>
> WindowsクライアントOS:Windows XP
> DNSサーバ:VineLinux3.2 BIND
おやじも、現在DNSが関係していると思われる問題を抱えていますが、家庭内ではこういうことは全く発生しません。おやじの場合、DNSというよりセカンダリがないことによるパケットロス発生時の問題と想像しています。従って、家庭内では起こることは考えにくいと思っています。
まず、Windowsクライアント側の問題と思われてますが、必ずしもそうではありません。Windows2K/XPの名前解決にはキャッシュ/ネガティブキャッシュの機能(DNSクライアントという機能でサービスにあり)があり、DNSから否定応答を受けるとネガティブキャッシュに落ちてしまいます。
ネガティブキャッシュに落ちているかどうかは、コマンドプロンプトで「ipconfig /displaydns」と入力したとき、下記のように表示されているもの(OSで少し表現が違うかも)がネガティブキャッシュに落ちていて、クライアントはデフォルトで5分間はDNSを再度牽くことはないのでしばらくはつながりません。
aaa123aaa.com
----------------------------------------
Name does not exist.
DNSから応答がない場合は、再度アクセスすれば問い合わせするはずです。(ここは少し自信ありません。)
うまくいかないときに、まず上記で確認し、クライアントを再起動せずに、コマンドプロンプトで「ipconfig /flushdns」とやればキャッシュがクリアされるので、再度DNSにアクセスしに行くのでここで解決するかもしれません。
なお、この機能自体はコンパネのサービスで「DNSクライアント」を停止すればキャッシュしなくなるので、DNSのテスト時は止めたほうがいいですね。常時停止するものではナイト思います。
仮に、現象はこれでわかっても、何でDNSが否定応答するのかはおやじには想像がつきません。
朝早くからレスありがとうございます。
> > 試行錯誤の結果なんとか目的は果たせるようになったのですが
> > 不意にインターネットで使っているドメインで繋がらなくなることが
> > 発生しています。※IP直指定すると普通に繋がります。
>
> ここで言う「インターネットで使っているドメイン」ということですよね。
> ほかのドメインに関しては、自宅のDNSサーバはキャッシュ動作しているだけで、自分のドメインは内向きにマスタDNSとして動作しているので、少し動きが違うためはっきりしておかないとまずいです。
言葉足らずで申し訳ありません。
おやじさんの仰るとおりで「インターネットで使っているドメイン」に関してのみ発生している問題です。そのほか一般のドメイン(例えばYahooだったりGoogleだったりその他ですね)は問題なく使えています。
「ipconfig /displaydns」 についてですが下記のような結果が帰ってきており問題ないようです。
※no-ip.com様のDDNSサービスを利用させていただいております。
※aaa.no-ip.com がインターネットで利用しているドメインです。
※wwwは別名、yyyはサーバ名となっております。
www.aaa.no-ip.com
----------------------------------------
Record Name . . . . . : www.aaa.no-ip.com
Record Type . . . . . : 5
Time To Live . . . . : 86220
Data Length . . . . . : 4
Section . . . . . . . : Answer
CNAME Record . . . . : yyy.aaa.no-ip.com
「ipconfig /flushdns」については、キャッシュをクリアしたあとに再度アクセスを試みましたが同様に失敗してしまいました。。
あと気になる箇所は、Windows側のTCP/IPの詳細設定でDNSのタブのところで「この接続のアドレスをDNSに登録する」という箇所にチェックが付いています。
これをチェックしておくと何やら何分間隔かで登録処理が走るようですがそれ以降で上記の接続できない問題が発生しているような気がします。気のせいかもですが。。この設定は基本的には無効にした方がよいのでしょうか。
> > ここで言う「インターネットで使っているドメイン」ということですよね。
> > ほかのドメインに関しては、自宅のDNSサーバはキャッシュ動作しているだけで、自分のドメインは内向きにマスタDNSとして動作しているので、少し動きが違うためはっきりしておかないとまずいです。
>
> 言葉足らずで申し訳ありません。
> おやじさんの仰るとおりで「インターネットで使っているドメイン」に関してのみ発生している問題です。そのほか一般のドメイン(例えばYahooだったりGoogleだったりその他ですね)は問題なく使えています。
>
> 「ipconfig /displaydns」 についてですが下記のような結果が帰ってきており問題ないようです。
>
> ※no-ip.com様のDDNSサービスを利用させていただいております。
> ※aaa.no-ip.com がインターネットで利用しているドメインです。
> ※wwwは別名、yyyはサーバ名となっております。
> www.aaa.no-ip.com
> ----------------------------------------
> Record Name . . . . . : www.aaa.no-ip.com
> Record Type . . . . . : 5
> Time To Live . . . . : 86220
> Data Length . . . . . : 4
> Section . . . . . . . : Answer
> CNAME Record . . . . : yyy.aaa.no-ip.com
>
> 「ipconfig /flushdns」については、キャッシュをクリアしたあとに再度アクセスを試みましたが同様に失敗してしまいました。。
申し訳ないのですが、話が見えなくなってしまいました。
「内向きにインターネットで使っているドメイン(aaa.no-ip.com)でサーバのプライベートアドレスを返す。」ために内向きDNSサーバを設置したんですよね。
自分のDNSにもwww.aaa.no-ip.comはCNAMEで登録したんですか? 先の説明を見る限りそうは思えません。上記のとおりなら、CNAMEのyyy.aaa.no-ip.comに関するデータがあるはずですが、それはルータのWAN側のグローバルアドレスになってませんか?
つまり、上記はno-ip.comのDNSのキャッシュデータではないんですか?ということです。
もしそうなら、原因は2つあるのでは?
ひとつは、自分DNSはちゃんと動作しているが、クライアント側が使っているDNSが違う。
もうひとつは、自分DNSの設定ミスでaaa.no-ip.comドメインをローカルで解決しておらず、単にキャッシュ動作で外部のDNSを牽いてそれを返している。
いずれにしても、クライアントを含めて自分のDNSのテストがちゃんとできていないのでは?
ローカルDNSが動いていれば、以下のように最後が家庭内でサーバに割り付けたプライベートのアドレスもしくはCNAMEしているなら、そのデータもあるはずです。最後にはAレコードでIPアドレスがわからなければ家庭内といえどもつながりませんから。
www.aconus.com
----------------------------------------
Record Name . . . . . : www.aconus.com
Record Type . . . . . : 1
Time To Live . . . . : 86391
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 192.168.1.100
上記のとおりなら、NEK. さんは自分のサーバにルータのWAN側のグローバルアドレスでアクセスしています。ある種のルータ(Corega等)はこういうアクセスに対してあたかもインタネット上からのアクセスのごとく家庭内サーバに中継してくれるものがあります。
そういうルータを使っていると、この仕組みが悪さをしている可能性は十分あります。この動作をしているかどうかは簡単にわかり、ブラウザに自分のルータのWAN側のアドレスを入れてアクセスしてみればいいだけです。通常は、エラーになるかルータのログイン画面になりますが、この種のルータはサーバにアクセスするので自分のHPが見えます。
もしそうならルータのバグでしょうから、ルータをリセットすれば直るはずです。
仮にそうでも、ローカルDNSをちゃんと動かしてプラーベートでアクセスすれば問題ないはずです。
キャッシュをクリアしても駄目ということは、おそらく上記の想定はあっていると思います。
> あと気になる箇所は、Windows側のTCP/IPの詳細設定でDNSのタブのところで「この接続のアドレスをDNSに登録する」という箇所にチェックが付いています。
> これをチェックしておくと何やら何分間隔かで登録処理が走るようですがそれ以降で上記の接続できない問題が発生しているような気がします。気のせいかもですが。。この設定は基本的には無効にした方がよいのでしょうか。
そのままで、何も問題ないです。
レスが遅れて申し訳ありません。
言いたいことを伝えるというのはなかなか難しいですね..orz..
> 申し訳ないのですが、話が見えなくなってしまいました。
> 「内向きにインターネットで使っているドメイン(aaa.no-ip.com)でサーバのプライベートアドレスを返す。」ために内向きDNSサーバを設置したんですよね。
> 自分のDNSにもwww.aaa.no-ip.comはCNAMEで登録したんですか? 先の説明を見る限りそうは思えません。上記のとおりなら、CNAMEのyyy.aaa.no-ip.comに関するデータがあるはずですが、それはルータのWAN側のグローバルアドレスになってませんか?
> つまり、上記はno-ip.comのDNSのキャッシュデータではないんですか?ということです。
www.aaa.no-ip.com は CNAME で登録してあります。
CNAMEのyyy.aaa.no-ip.comに関するデータ(ipconfig /displaydnsの結果)は上記現象が発生している時にはありませんでしたが
再起動後に、再度、ipconfig /displaydnsで確認したところ、表示されました。
そのときの Time To Live が 1058 (再起動直後は1200?)だったので、他(一日に設定されてたと思います)に比べて短いのが少々気になります。
> 上記のとおりなら、NEK. さんは自分のサーバにルータのWAN側のグローバルアドレスでアクセスしています。ある種のルータ(Corega等)はこういうアクセスに対してあたかもインタネット上からのアクセスのごとく家庭内サーバに中継してくれるものがあります。
> そういうルータを使っていると、この仕組みが悪さをしている可能性は十分あります。この動作をしているかどうかは簡単にわかり、ブラウザに自分のルータのWAN側のアドレスを入れてアクセスしてみればいいだけです。通常は、エラーになるかルータのログイン画面になりますが、この種のルータはサーバにアクセスするので自分のHPが見えます。
> もしそうならルータのバグでしょうから、ルータをリセットすれば直るはずです。
> 仮にそうでも、ローカルDNSをちゃんと動かしてプラーベートでアクセスすれば問題ないはずです。
> キャッシュをクリアしても駄目ということは、おそらく上記の想定はあっていると思います。
WAN側のアドレスを入れてアクセスしてみたところルータのログイン画面になりました。
現在は、no-ip.comサービスの設定を変更し、BINDの設定ファイルを見直しているところです。
今の状況では、内容の整理ができておらず、おやじさんに時間を取らせてしまうだけになってしまうので
しっかりまとまった後に、再度、書き込ませていただきたいと思います。
以上、お手数おかけし申し訳ありませんでした。