前言

不想看废话的可以直接跳到这里
随着互联网的发展,IPv4在各个方面都已无法满足日益增长的需求,作为它的接任者————新一代的IP协议IPv6应运而生.
我们正处在IPv4和IPv6并存的过渡阶段,目前主流设备都已支持IPv6,国内几大运营商也开始大规模推广IPv6.(可以访问test-ipv6.com来确认支持情况ヾ(•ω•`)o)
默认情况下,IPv6优先级会高于IPv4:
当访问一个双栈网站(即同时支持IPv4和IPv6)时,系统会选择使用IPv6进行访问.
这么做的本意是为了加快推广新技术,但在国内特殊的网络环境下却显现出一些问题:

  • 当访问国内网站时,问题并不明显;
  • Cloudflare优选IP失效:目前大家的优选IP基本上都只有IPv4,IPv6则是走cloufflare默认(主要是六筛选及维护难度过高);
  • 线路无优化导致网络质量差:买过国外优化线路服务器的小伙伴大多都知道,线路的优化一般只针对IPv4,IPv6大多为普线,香港等亚洲地区的服务器大概率绕美、绕欧(移动除外).

手动设置优先级

针对这些问题,有两个常见的解决方案:

  • 直接关闭IPv6,但会导致无法访问纯v6网站(虽然目前这类网站不多)
  • 另一个方法是手动设置,让系统优先使用IPv4.
    下面记录了部分系统设置IPv4优先的方法,也当给自己留个备忘录:

Windows

  1. 打开注册表编辑器(Win+R输入regedit);
  2. 在顶部导航栏输入HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters;
  3. 找到DisabledComponents,默认情况下这个值应该为0;
  4. 右键并点击修改(M),将这个值加20(注意右边的基数必须是十六进制);
    修改注册表
  5. 保存并重启电脑就好啦( ̄︶ ̄)↗

 

PS: DisabledComponents取值范围为0~255,用于配置Windows系统对于IPv6的行为;
将值加32,也就是将二进制下右数第6位置1,对应的效果就是优先 IPv4 而非 IPv6;
以下为官方文档的链接,在对对这个值进行其它更改时,请务必确认清楚自己正在做什么,小白不要随意尝试!

Linux

输入以下命令:

本脚本在Debian下通过测试,理论上适用于所有Linux内核的操作系统,如有兼容性问题麻烦告诉我ヾ(•ω•`)o

    cp /etc/gai.conf /etc/gai.conf.backup && cat /etc/gai.conf | grep -v 'precedence ::ffff:0:0/96';echo 'precedence ::ffff:0:0/96 100' > /etc/gai.conf

运行后如果出现问题,使用以下命令恢复原配置:

    mv /etc/gai.conf.backup /etc/gai.conf

其它系统

目前未发现MacOS``Android,iOS开放了相关选项,如果有知道的小伙伴麻烦告知一下( ̄y▽, ̄)╭
有需求的还是老老实实禁用v6吧()

检测效果

设置完成后可以打开此链接,出现的地址为IPv4即为成功:
检测效果