一份旧的 Squid 配置里有 dns_v4_first on。升级之后,这一行不再带来预期的 IPv4 偏好。再复制多少份也不会恢复旧行为。

配置参考文档把该指令列为在 Squid 5 至 7 中不可用。Squid 的地址选择随 Happy Eyeballs 工作而改变;旧的偏好建议需要放在这一版本的语境里理解。

偏好与强制是两种不同诉求

先想清楚你要什么。两个地址族都可用时更想走可用的 IPv4 路径?想消除坏掉的 IPv6 连通性?想保证某个出口只用 IPv4?这些不是同一种策略。目标地址族限制也要与客户端来源 ACL 分开。

禁用某个地址族的访问可能让部分站点变得不可达。修改 DNS 应答只会改变代理可用的候选地址。修复缓慢或损坏的路由是在处理网络故障。这些都不该被描述成那条被移除指令的通用替代行。

还要把目标地址选择与访问父代理所用的地址分开。父代理的主机名可以有自己的 IPv4 与 IPv6 候选,而父代理按自己的策略完成最终网站连接。

源地址规则又是另一回事:它为连接挑选兼容的源地址,而不是凭空制造目标支持。IPv4 源不会把只有 IPv6 的目标变成 IPv4 端点。

查看已安装版本的文档和完整的转发路径。如果问题是不稳定的 IPv6 连接,应保留这个诊断,而不是做一次恰好掩盖它的静默全局改动。可用的首选路由与严格的单一地址族出口,值得不同的配置。

相关文章