我在设置 squid 时遇到了 DNS 问题。我还尝试dns_nameservers
在 squid.conf 中使用指令指向 DNS 服务器。我遇到过这样的情况:www.example.com 应该连接到互联网,而 foo.example.com 应该连接到内部域。从我的客户端,当我尝试 ping foo.example.com 时,它会获取正确的 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 中获取名称服务器。但是,这对我来说不起作用。虽然操作系统 (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 服务器 ping foo.example.com 吗?如果不能,那么客户端和服务器肯定使用不同的 DNS 服务器,或者它们被提供给该区域的不同视图。