Squid 无法解析主机名时该查什么
检查代理服务器使用的解析器,不要以为客户端查询成功就证明 Squid 也能解析同一个名称。
在查询失败发生的位置检查 DNS。你的笔记本能解析某个名称,并不代表 Squid 或负责后续连接的上级代理也能解析它。
查看故障实例的缓存日志和服务器的解析器设置。可用以下主机级检查作为辅助:
getent ahosts target.example使用实际目标。getent 检查的是主机的名称查询机制;Squid 的内部解析器或缓存可能不同。在假定两者一致之前,检查显式指定的 dns_nameservers 和 hosts_file 输入。
对于 Squid 6.13,显式指定的名称服务器列表应包含 IP 地址:
dns_nameservers 192.0.2.53将这个文档示例地址替换为获准使用、且 Squid 服务器能够访问的解析器。私有名称可能需要组织内部的解析器;无关的公共解析器可能无法在其 DNS 视图中找到这些名称。
笔记本 hosts 文件中的别名不会随经过代理的主机名请求一起传过去。在执行查询的机器上检查已安装 Squid 版本的 hosts_file 设置;如果涉及上级代理,还要考虑其解析器。用于 TLS 身份验证的主机名应与服务保持一致。
进行一次受控配置修改后,对目标实例检查配置语法并重新加载,重复同一个请求并查看相应证据。缓存的肯定和否定回答都可能影响重复测试。查询成功后出现连接超时,属于后续的路由或权限故障;不要继续修改 DNS 来解决它。评估服务器端修改时,保持客户端 DNS、上级代理路由和代理协议不变。