Windows IPv4 优先设置

问题背景:为什么 IPv6 会让网速变慢?

配置 IPv6 后感觉网络变慢,是一个常见现象,原因并不在于 IPv6 协议本身,而在于 Windows 的默认行为和你的实际网络环境不匹配:

一、Windows 默认 IPv6 优先策略

根据微软的设计,Windows 系统在同时拥有 IPv4 和 IPv6 地址时,会默认优先使用 IPv6 全球单播地址。这意味着:

  • 当你访问一个同时支持 IPv4 和 IPv6 的网站或服务时,系统会优先尝试用 IPv6 连接
  • 如果你的 IPv6 网络质量不佳(例如通过 NAT6 获得、延迟较高、或存在 MTU 问题),就会感觉网页加载变慢

二、你的 IPv6 环境属于“兜底方案”

在你的 ImmortalWrt 路由器上,由于运营商没有下发 PD 前缀,你配置的是 NAT6(IPv6 网络地址转换)

对比项原生 IPv6NAT6(你的环境)
地址类型全球可路由公网地址内网 ULA 地址 + WAN 口 NAT 转换
转发路径直接路由路由器做源地址转换,增加 CPU 开销
延迟较低可能有额外损耗
可靠性依赖 NAT 规则正确性

NAT6 本身会带来少量性能损耗(通常 <5%),且如果配置不当(如 MSS 钳制未开启、MTU 不匹配),可能进一步加剧卡顿。

三、常见 IPv6 卡顿原因

可能原因说明
MTU 黑洞问题IPv6 路径上 MTU 值不匹配,导致大包丢失,表现为视频转圈、图片加载慢
跨网调度问题运营商的 IPv6 流量可能被调度到地理位置较远或不同运营商的服务器上,延迟增加
NAT6 性能损耗地址转换增加路由器 CPU 负载,可能引入额外延迟
应用层主动选择抖音等大型应用会自测 IPv4/IPv6 链路质量,可能主动选择 IPv6

解决方案:让 Windows 优先使用 IPv4

针对以上问题,最直接有效的方法是修改 Windows 的网络策略,让系统优先选择 IPv4,而不是完全禁用 IPv6(保留 IPv6 以备特殊需求)。

方案一:修改注册表(最推荐,永久生效)

这个方法告诉 Windows:“在同时有 IPv4 和 IPv6 地址时,优先用 IPv4”。

操作步骤:

  1. 按下 Win + R,输入 regedit,回车打开注册表编辑器
  2. 在顶部地址栏复制粘贴以下路径,回车快速定位:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters
  3. 在右侧空白处,右键 → 新建DWORD (32位)值
  4. 将其命名为 DisabledComponents
  5. 双击新建的值,将 数值数据 改为 32(十进制),确保基数选择 “十进制”

    ⚠️ 注意:不要填十六进制的 0x20,直接填 32 即可
  6. 点击“确定”,关闭注册表编辑器,重启电脑 使改动生效

此方法的效果:

  • ✅ IPv4 成为首选协议
  • ✅ IPv6 仍然可用(如果应用明确要求或手动访问)
  • ✅ 不会破坏任何依赖 IPv6 的功能

方案二:命令提示符方案(无需重启,立即生效)

如果你不想重启电脑,可以通过修改 IPv6 策略表实现同样的效果。

操作步骤:

  1. 在 Windows 搜索框输入 cmd,右键选择 “以管理员身份运行”
  2. 一次性复制粘贴以下命令,然后按回车执行:

    netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 50 0
    netsh interface ipv6 set prefixpolicy ::1/128 40 1
    netsh interface ipv6 set prefixpolicy ::/0 30 2
    netsh interface ipv6 set prefixpolicy 2002::/16 20 3
    netsh interface ipv6 set prefixpolicy 2001::/32 5 5
    netsh interface ipv6 set prefixpolicy fc00::/7 3 13
    netsh interface ipv6 set prefixpolicy fec0::/10 1 11
    netsh interface ipv6 set prefixpolicy 3ffe::/16 1 12
    netsh interface ipv6 set prefixpolicy ::/96 1 4
  3. 执行完毕后,新的策略会立即生效,无需重启

恢复默认策略的方法:

如果将来想恢复 Windows 默认的 IPv6 优先策略,以管理员身份运行命令提示符,执行:

netsh interface ipv6 reset

然后重启电脑。

方案三:调整网络接口跃点数(辅助方案)

如果注册表或命令行方案效果不理想,可以通过降低 IPv4 的优先级数字来强制其优先。

操作步骤:

  1. 打开 控制面板 → 网络和共享中心 → 更改适配器设置
  2. 右键点击你正在使用的网络连接(如“以太网”或“WLAN”),选择 属性
  3. 选中 Internet 协议版本 4 (TCP/IPv4),点击下方的 属性 按钮
  4. 在弹出的窗口中,点击 高级 按钮
  5. IP 设置 选项卡下,取消勾选“自动跃点”
  6. 接口跃点数 输入框中,填入一个较小的数字,例如 10(数字越小优先级越高)
  7. 点击“确定”保存

验证方法:如何确认 IPv4 优先已生效

完成上述配置后,用以下方法验证是否生效。

方法一:浏览器访问测试网站(最直观)

打开浏览器,访问 http://ip.sb

显示结果结论
显示 IPv4 地址(如 110.xxx.xxx.xxx192.168.x.x✅ IPv4 优先生效
显示 IPv6 地址(如 240e::xxxx❌ 仍是 IPv6 优先
备选测试网站:https://test-ipv6.com(会详细显示你的访问优先级)

方法二:使用 ping 命令(最直接)

打开命令提示符(CMD),执行:

ping -n 2 ip.sb
返回结果结论
返回 IPv4 格式地址(如 123.58.xxx.xxx✅ IPv4 优先已生效
返回 240e::... 开头的 IPv6 地址❌ 仍在使用 IPv6

方法三:检查注册表是否写入成功(方案一专用)

以管理员身份打开 PowerShell,执行:

Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters" -Name "DisabledComponents"
显示结果结论
DisabledComponents : 32✅ 注册表写入成功
找不到该值❌ 设置未成功,请重新添加

方法四:查看 IPv6 策略表(方案二专用)

如果你用的是命令行方案(netsh 命令),可以查看策略表确认修改:

netsh interface ipv6 show prefixpolicies

正常修改后的结果应看到:

优先级标签前缀说明
500::ffff:0:0/96IPv4 映射地址,优先级最高 ✅
401::1/128本地回环
302::/0默认路由

如果第一行的 ::ffff:0:0/96 优先级是 50(或其他大于 30 的数字),说明 IPv4 优先已生效。

特殊情况:为什么抖音还是走 IPv6?

如果你已完成上述配置,普通网页(如 ip.sb)显示 IPv4 正常,但打开抖音(网页版或 App)时发现仍然走 IPv6,这是完全正常的现象,原因如下:

原因一:抖音 CDN 已全面支持 IPv6

抖音的视频内容存储在遍布全国的 CDN 节点上,其域名(如 sf1-cdn-tos.douyinstatic.comwww.douyin.com)均同时配置了 IPv4 和 IPv6 地址。域名解析系统完全可以返回 IPv6 地址。

原因二:抖音客户端会“主动选择”最优路径

大型互联网应用的客户端内部有一套智能调度逻辑:

  • 它会同时测试 IPv4 和 IPv6 链路的连接速度、延迟和稳定性
  • 根据测试结果,动态选择质量更优的协议进行通信
  • 即使你的系统设置 IPv4 优先,如果抖音的客户端“觉得”你的 IPv6 网络质量更好,它仍然可能主动选择 IPv6

原因三:Windows 系统设置只是“建议”

你的注册表设置是请求系统在地址选择时“更倾向于 IPv4”。对于浏览器访问普通网页,这个“建议”会被尊重。但对于抖音这类使用复杂网络库的应用,其自身的调度策略拥有更高的决策权重。

如何强制抖音走 IPv4?

如果你确认 IPv4 体验更好,希望强制抖音走 IPv4:

方法一:关闭路由器的 IPv6(最彻底)

在你的 ImmortalWrt 路由器上,直接关闭整个内网的 IPv6 功能:

  • 网络 → 接口,删除或禁用 WAN6 接口

方法二:禁用电脑网卡的 IPv6(仅限本机)

  1. 打开 控制面板 → 网络和共享中心 → 更改适配器设置
  2. 右键点击正在使用的网络连接,选择 属性
  3. 找到 Internet 协议版本 6 (TCP/IPv6)取消勾选
  4. 点击“确定”保存(立即生效,无需重启)

故障排查表

现象可能原因解决方法
注册表修改后仍 IPv6 优先没有重启电脑重启电脑使配置生效
注册表值填成了 0x20基数选错了删除重建,直接填十进制 32
netsh 命令报错没有管理员权限右键“以管理员身份运行”CMD
浏览器显示 IPv6,但 ping 显示 IPv4浏览器 DNS 缓存清除浏览器缓存或重启浏览器
普通网页 IPv4 正常,抖音仍走 IPv6抖音自有调度策略正常现象;如需强制 IPv4,请用路由器或网卡关闭 IPv6

总结

步骤操作状态
1修改注册表 DisabledComponents=32 或执行 netsh 命令✅ 核心步骤
2重启电脑(注册表方案必需)✅ 使配置生效
3访问 http://ip.sb 验证✅ 确认 IPv4 优先
4(可选)关闭网卡 IPv6 强制走 IPv4⚠️ 彻底但牺牲 IPv6