ネットワークでホストされているWebサーバーがあります。ドメイン名が登録されています。ただし、LAN用のDNSサーバーもホストしています。したがって、誰かがWebサーバーにアクセスしたい場合、DNSサーバーをチェックし、内部アドレス192.168.x.xを使用します。 Webサーバーのパブリックアドレスは203.x.x.xです。
コンピューターが正常に動作している場合は、pingを実行するか、nslookupwww.mydomain.comを試してみます。どちらも内部アドレスである192.168.x.xを指しています。時々、私または誰かがwww.mydomain.comにアクセスできませんでした。チェックすると、nslookupが内部アドレスを返します。しかし、私がpingを実行すると、このようなパブリックアドレスを使用して接続しようとします。
Pinging www.mydomain.com [203.x.x.x] with 32 bytes of data:
その場合は、接続の修復がほとんど役に立ちます。ワークステーション(Win XP)を再起動する必要がある場合があります。ワークステーションのDNS設定では、プライマリDNSはDNSサーバーを指し、セカンダリDNSはISPDNSサーバーを指します。
私が知りたいのは、この問題の原因とその防止ですか?または私の現在のものよりも良い修正。ありがとう
内部DNSをプライマリとして検索し、外部DNSサーバーをセカンダリとして検索するようにクライアントを構成しましたか?競合状態があります。内部DNSの応答が遅すぎると、クライアントはパブリックDNSサーバーから使用できない応答を受け取ります。 ping
は外部DNSサーバーに対するルックアップからのキャッシュされた応答を使用していますが、nslookup
は内部DNSサーバーから有効な応答を取得する新しいリクエストを送信しています。
プライマリサーバーとセカンダリサーバー間でDNSのビューに一貫性がない場合、このような問題が発生する可能性があります。代わりに、2番目の内部DNSサーバーを立ち上げてセカンダリとして使用するか、セカンダリDNSサーバーをまったく使用せずにクライアントを構成します。
この問題は、内部ネットワーク内でRFC1918プライベートアドレスを使用していることが原因で発生します。その結果、ネットワークの一方の側で1つのアドレスを使用し、もう一方の側で別のアドレスを使用して、サーバーにアクセスする必要があります。
これに対する短期的な解決策は、 スプリットホライズンDNSを実装する です。これにより、ネットワーク内外で一貫したDNSエントリが提供されます。
これに対する長期的な解決策は、IPv6を実装することです。この場合、内部か外部かに関係なく、サーバーに同じアドレスが割り当てられます。