Why?
不想看废话的可以直接跳到这里
随着互联网的发展,IPv4 在各个方面都已无法满足日益增长的需求,作为它的接任者————新一代的 IP 协议 IPv6 应运而生.
我们正处在 IPv4 和 IPv6 并存的过渡阶段,目前主流设备都已支持 IPv6,国内几大运营商也开始大规模推广 IPv6.(可以访问test-ipv6.com来确认支持情况ヾ(•ω•`)o)
默认情况下,IPv6 优先级会高于 IPv4:
当访问一个双栈网站(即同时支持 IPv4 和 IPv6)时,系统会选择使用 IPv6 进行访问.
这么做的本意是为了加快推广新技术,但在国内特殊的网络环境下却显现出一些问题:
- 当访问国内网站时,问题并不明显;
- Cloudflare 优选 IP 失效:目前大家的优选 IP 基本上都只有 IPv4,IPv6 则是走 cloufflare 默认(主要是 v6 筛选及维护难度过高);
- 线路无优化导致网络质量差:买过国外优化线路服务器的小伙伴大多都知道,线路的优化一般只针对 IPv4,IPv6 大多为普通线路.
手动设置优先级
针对这些问题,有两个常见的解决方案:
直接关闭 IPv6,但会导致无法访问纯 v6 网站(虽然目前这类网站不多)
另一个方法是手动设置,让系统优先使用 IPv4.
下面记录了部分系统设置 IPv4 优先的方法,也当给自己留个备忘录:
Windows
- 打开注册表编辑器(Win+R输入
regedit); - 在顶部导航栏输入
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters; - 找到
DisabledComponents,默认情况下这个值应该为 0; - 右键并点击
修改(M),将这个值加 20(注意右边的基数必须是十六进制);
- 保存并重启电脑就好啦( ̄︶ ̄)↗
PS:
DisabledComponents取值范围为 0~255,用于配置 Windows 系统对于 IPv6 的行为;
将值加 32,也就是将二进制下右数第 6 位置 1,对应的效果就是优先 IPv4 而非 IPv6;
以下为官方文档的链接,在对对这个值进行其它更改时,请务必确认清楚自己正在做什么,小白不要随意尝试!
Linux
输入以下命令:
本脚本在 Debian 下通过测试,理论上适用于所有 Linux 内核的操作系统,如有兼容性问题麻烦告诉我ヾ(•ω•`)o
cp /etc/gai.conf /etc/gai.conf.backup && echo 'precedence ::ffff:0:0/96 100' >> /etc/gai.conf运行后如果出现问题,使用以下命令恢复原配置:
mv /etc/gai.conf.backup /etc/gai.conf其它系统
目前未发现MacOS``Android,iOS开放了相关选项,如果有知道的小伙伴麻烦告知一下( ̄ y▽, ̄)╭
有需求的还是老老实实禁用 v6 吧()
检测效果
设置完成后可以打开此链接,出现的地址为 IPv4 即为成功: