質問: lan内に立てたwebサーバーの名前解決 lan内に立てたwebサーバーの名前解決がある程度時間が経過すると失敗します。ipアドレスを直接入力するとアクセスできます。 名前解決はdnsを用い、 webサーバーはlinuxのapache、 dnsはlinux上でbind、 クライアントはwindows7で、webサーバー、dns、クライアントは同一ネットワークにあります。 アクセス出来ない状態でwindowsから nslookup ホスト名 と入力するとdnsサーバーからの答えとしてipアドレスは返ってきますが ipconfig /displaydns を入力するとそのwebサーバーは一覧に出てこなくなります。 そこで net stop dnscache net start dnscache とdns clientを再起動すると、ホスト名でアクセスできます。 bindのレコードですがttlは604800を指定しています。 dns clientをいちいち再起動すること無く、運用できないものでしょうか?
回答: なかなか不可解な現象が発生していますね。 情報が不足していることもあり、直接的な答えではなく適切な回答になっていなかったらご容赦下さい。 >dns clientをいちいち再起動すること無く、運用できないものでしょうか? それほど複雑な構成ではないと思いますので通常はこんなことにはならないはずですので、何か設定や構成がおかしいと思います。 windowsの名前解決は、 ・優先dns、代替dnsサーバの設定 ・プライマリ及び接続固有のdnsサフィックス ・netbiosのノードタイプ などによって名前解決の優先順位が変わりますし、アプリ側の実装によっても変わります。(ブラウザならばプロキシの有無など) 従って、実際にどのようになっているかは通信をキャプチャして調査するのが良いと思います。 名前解決のプロトコルはそれほど難しくないので見れば大体わかると思います。 >nslookup ホスト名 >と入力するとdnsサーバーからの答えとしてipアドレスは返ってきますが >ipconfig /displaydns >を入力するとそのwebサーバーは一覧に出てこなくなります。 この結果から判断するとdnsによる名前解決自体は問題ないように思います。 dns名前解決以外の何かが影響していることが考えられます。 ちなみにご存じかもしれませんが、 nslookupコマンドは常に優先dnsに設定されたipアドレスにクエリし冗長化のしくみは機能しません。(serverサブコマンドなどで変更しない限り) また、ホスト名の最後にドットを付けなければ、dnsサフィックスに従ってドメイン名を付与してfqdnでのクエリに自動的に変更します。 また、nslookupでクエリしたものはクライアントのdnsキャッシュに保存されないはずです。 >bindのレコードですがttlは604800を指定しています。 余談ですが、lan内のローカルで使用するゾーンではこのttlは長すぎると思います。 参考になる部分があればいいですが。