Squid の DNS 問題

Squid の DNS 問題

Squid の設定で DNS の問題が発生しています。また、dns_nameserversDNS サーバーを指定するために squid.conf のディレクティブも使用してみました。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 に接続しようとするのかが気になります。

答え1

私が読んだドキュメントによると、Squid はデフォルトで /etc/resolv.conf ファイルからネーム サーバーを取得するようです。しかし、私の環境ではうまくいきませんでした。OS (Debian) 自体は IP を解決できましたが、Squid は文句を言っていました。次の変更を加えると、うまくいきました:
/etc/nsswitch.conf:
hosts: files dns
/etc/hosts:
<ip_of_server> foo.example.com

squid が /etc/resolv.conf からネーム サーバーを取得しない理由をまだ解明中です。

答え2

クライアントはどの DNS サーバーを使用していますか? クライアントが正しく解決できるという事実は、squid にほとんど影響しません。

プロキシを使用する場合、サーバーが DNS 解決を実行するため、クライアントの DNS 解決は重要ではなく、プロキシのアドレスを解決できれば十分です。

Squid サーバーから foo.example.com に ping できますか? できない場合は、クライアントとサーバーが異なる DNS サーバーを使用しているか、そのゾーンに対して異なるビューが提供されている必要があります。

関連情報