关于启用IPV6后openwrt代理部分网站如Netflix、Disney+、Spotify等出现错误的解决方案

       最近,由于想要将内网的NAS通过Tailscale进行虚拟组网,我将科协的openwrt根据这篇文章配置好了ipv6,希望能借此获得公网ipv6地址,提升虚拟组网直连的效果。结果,却意外发现打开ipv6以后,不仅出现了Netflix、Disney+等流媒体显示区域不支持的问题,Spotify还出现了Chrome系浏览器没法打开的问题(CONNECTION_RESET)。最恼人的当属Bing。打开ipv6以后,它会在CN与国际版之间来回切换,直到重定向次数过多。一切问题的源头都指向ipv6服务。而我也确实在Google上搜到了不少相关问题的讨论。如V2Ray的这篇Discussion:https://github.com/v2fly/v2ray-core/discussions/1565。经过搜索调查,我发现,原因来自Openwrt使用的SSR+及Openclash均对ipv6的代理支持不佳。因此,ipv6流量往往成为代理的漏网之鱼。而这些流媒体网站又大多都有ipv6服务,它们便会根据ipv6进行地区识别。在此情况下,虽然ipv4地址经过了代理,但由于部分ipv6服务仍从国内转发,因此就被判定为了服务区外。而Bing的重定向原因也是如此。国内的CN Bing使用的是ipv4服务,而国际版使用ipv6服务。这就使得国际版识别到了ipv6地址来自国内,自动重定向到了CN Bing,而CN Bing又只看ipv4,在它看来这个访问是经过代理了的国外访问请求,因此应该转发国际版。这样一来一回,重定向就会陷入死循环,进而崩溃。

        要解决这个问题也很简单,只要禁止这些网站使用ipv6,也就是说,强制它们的连接回退到ipv4即可解决这个问题。具体解决方法我参考了这篇Github Gist文章:Workarounds for Netflix and the blocking of Hurricane Electric IPv6 tunnels。简单来说,只要打开openwrt内/etc/dnsmasq.conf这一dnsmasq配置文件,并在内部添加形如:

# Null AAAA response on these domains
server=/xxx.com/#
address=/xxx.com/::

   的代码,并重启路由器或dnsmasq服务,即可让Openwrt的DNS服务——dnsmasq自动忽略ipv6响应,自然就能解决问题了。

   当然,如果不是必须使用的话,看来这ipv6目前还是一堆问题啊😥,不仅有这个部分网站借此检测区域的问题,还会出现代理速度莫名其妙变慢的问题,甚至有部分服务直接因为不支持ipv6挂掉的情况。配置的时候也很麻烦,只能说是非必要不启用吧……但是用了以后有了ipv6公网地址和子网是真的香

点赞

发表回复

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像(暂时停用!)

Title - Artist
0:00