是否有任何可行的方法可以强制选定数量的域使用 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.4
。eth0
网络掩码可能并不重要,但我选择 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 时更改配置。