SquidのセットアップでDNSの問題が発生しています。また、squid.confでdns_nameservers
ディレクティブを使用して、DNSサーバーをポイントしようとしました。 www.example.comがインターネットにアクセスすることになっているが、foo.example.comが内部ドメインにアクセスすることになっているシナリオがあります。クライアントからfoo.example.comにpingを実行しようとすると、正しいIPが取得されますが、ブラウザーで次のエラーが発生します。
Unable to determine IP address from hostname foo.example.com
The DNS server returned:
Name Error: The domain name does not exist
クライアントが正しいIPを指していることは知っていますが(pingは正常に機能するため)、なぜsquidがパブリックexample.comに接続しようとするのか興味があります。
私が読んだドキュメントは、デフォルトで、Squidがファイル/etc/resolv.confからネームサーバーを取得することを示唆しています。しかし、それは私にはうまくいきませんでした。 OS(Debian)自体がIPを解決できたが、イカは不平を言っていた。次の変更を加えて機能させました。
/etc/nsswitch.conf:hosts: files dns
/etc/hosts:<ip_of_server> foo.example.com
Squidが/etc/resolv.confからネームサーバーを取得しない理由をまだ理解しようとしています。
クライアントはどのDNSサーバーを使用していますか?クライアントがそれを正しく解決できるという事実は、イカにはほとんど影響を与えません。
プロキシを使用する場合、サーバーがDNS解決を行うため、クライアントのDNS解決は重要ではありません。プロキシのアドレスを解決できる必要があります。
Squidサーバーからfoo.example.comにpingを実行できますか?そうでない場合、クライアントとサーバーは異なるDNSサーバーを使用している必要があります。そうでない場合、そのゾーンに対して異なるビューが提供されます。