强制 Squid 通过 IPv4 而不是 IPv6 连接到站点

强制 Squid 通过 IPv4 而不是 IPv6 连接到站点

是否有任何可行的方法可以强制选定数量的域使用 IPv4 连接而不是使用 Squid 的 IPv6,无论是否通过acl其他方法?

我知道dns_v4_first配置值,但它对我没有帮助。

我遇到的问题是,我的 IPv6 由 Hurricane Electric(隧道)提供,这最终会混淆各种基于地理位置的检测,当网站部署了 IPv6 时,它会认为我在美国(其实不是,我是英国)。这给 Netflix 等流媒体服务带来了问题,它会向我显示美国的列表,但随后会检测到我实际上大部分时间都在英国。(剧透如何在没有 DNS 黑客的情况下获得美国 Netflix!)

我需要一种方法来控制这些服务并确保它们通过 IPv4 传输。虽然这违背了整个 IPv6 方案,但我别无选择,除非我完全禁用 IPv6,而我不会这么做。

答案1

我的经验是,源地址选择很难做到正确。通常我尝试几次后就会放弃。

以下是我配置 Web 代理以在双栈机器上强制使用 IPv4 的操作(使用 Linux 测试):

  • 在接口上创建一个未使用的 RFC 1918 IPv4 地址,例如10.2.3.4eth0网络掩码可能并不重要,但我选择 32。
  • squid使用此指令进行配置:

    tcp_outgoing_address 10.2.3.4 [your acl]
    
  • 如果数据包的源地址是,则设置防火墙规则进行 NAT 伪装10.2.3.4。这将转换为您的真实 IPv4 地址。

由于源地址明确设置为 IPv4,squid 永远不会连接到 IPv6 地址。

我本可以在tcp_outgoing_address指令中使用我的真实 IP,但我的 ISP 使用的是动态 IP,这种方法意味着我不必在每次有新 IP 时更改配置。

相关内容