我正在全球分布的多个位置管理几个在 Ubuntu 20.04LTS 上运行 Squid 4.10 的网络代理。其中一个人养成了偶尔无法访问网页的坏习惯。用户会收到一个错误页面,上面写着:
Hmmm... can't reach this page
It looks like the webpage at <URL> might be having issues,
or it may have moved permanently to a new web address.
ERR_TUNNEL_CONNECTION_FAILED
按照此邮件列表帖子中的建议添加%err_code/%err_detail
到相关内容的末尾后,失败访问的 Squid access.log 条目如下所示:logformat
1635169354.239 171 10.72.1.103 NONE/503 0 CONNECT ad.360yield.com:443 - HIER_
NONE/- - ERR_DNS_FAIL/-
Squid 状态是NONE/503
,错误代码和详细信息总是ERR_DNS_FAIL/-
。时间戳、客户端 IP 地址和请求的 URL 当然会有所不同。
每次出现问题都会影响单个 FQDN 或极少数 FQDN,通常都来自同一组织(例如 lm.licenses.adobe.com 和 cc-api-data.adobe.io,均来自 Adobe。)所有其他访问继续正常工作。一个事件通常持续五到十分钟。在此期间,所有尝试访问该 FQDN 的客户端都会受到影响。在此之前和之后,相同的 FQDN 可以正常工作。受影响的 FQDN 没有明显的规律性。
一些事件伴随着如下消息:
2021/10/25 15:42:34 kid1| ipcacheParse No Address records in response to 'ad.360yield.com'
但在/var/log/squid/cache.log
大多数情况下,那里没有任何记录。
我怎样才能找出那里出了什么问题?
通过放置指令将 DNS 查找的日志级别增加到 6
into
/etc/squid/squid.conf
使 Squid 记录到/var/log/squid/cache.log
哪个名称服务器用于失败的查询,例如:然后可以在该名称服务器上进一步调查这些故障。
就我而言,这指向
dnsmasq
在同一台机器上运行的 DNS 代理服务器。启用查询日志记录dnsmasq
显示,四个配置的外部名称服务器之一是造成故障的原因。发送到该名称服务器的查询失败,而发送到其他三个的查询成功。所以解决方案是从配置中删除有故障的外部名称服务器。