可以接受来自 IPv4 的客户端,并通过 IPv6 访问其请求的网站。这些是不同的连接。面向网站一侧的策略不应自动拒绝 IPv4 客户端。

把目标地址族拒绝与 src ipv4 组合在一起的示例中,陷阱就在这里:源 ACL 改变的是谁可以连接,而不只是允许哪些网站连接。

明确预期的限制

对于支持相关 IP ACL 的 Squid 版本,目标地址族规则可以使用 dst ipv4 来识别 IPv4 目标。应把这些规则与现有的身份验证和目标权限结合起来;不要追加一条绕过它们的宽泛 IPv6 放行规则。

ACL 参考区分源类型和目标类型。这是一种限制,而不是自动转换服务。即使机器本可以通过 IPv4 访问某个仅支持 IPv4 的网站,该网站也可能变得不可用。

绑定出站 IPv6 地址也不是完整的执行策略。源选择、允许的目标地址族、DNS 应答以及实际网络可达性都有影响。要明确决定是否可以接受回退到 IPv4。

修改 forwarded_for 并不能解决这个问题。它影响的是 HTTP 头,而不是代理 TCP 连接的地址族。同样,IPv6 DNS 解析器也不保证它应答的每个名称都有 IPv6 目标。

在采用大型旧配置之前,请检查特定版本的行为。特别是:在 Squid 5 到 7 中,dns_v4_first 并不是受支持的地址族优先开关。能够精确描述的策略,比一组互不相关的 IPv6 设置更容易验证。

相关文章