1025 字
5 分钟
Windows 10 IPv4/IPv6网络优先级设置与切换方法

使用场景#

在以下情况下可能需要调整 IPv4/IPv6 优先级:

  • 双栈网络环境:同时连接 IPv4 和 IPv6 网络
  • 应用兼容性测试:某些应用仅支持 IPv4
  • 网络性能对比:测试 IPv4 vs IPv6 的速度差异
  • 企业网络部署:逐步迁移到 IPv6 的过渡期
  • 网络故障排查:确定是 IPv4 还是 IPv6 的问题

注意事项#

  1. 需要管理员权限:所有命令必须以管理员身份运行
  2. 临时生效:默认情况下重启后恢复系统默认值
  3. 谨慎修改:错误的配置可能导致网络连接问题
  4. 记录原配置:修改前建议记录原始设置以便恢复

查看当前优先级配置#

步骤一:以管理员身份打开命令提示符#

方法 1: Win + X → 选择”Windows PowerShell(管理员)”

方法 2: 搜索 cmd → 右键”以管理员身份运行”

步骤二:查看当前前缀策略#

Terminal window
netsh interface ipv6 show prefixpolicies

输出说明:

优先顺序 标签 前缀
---------- ----- --------------------------------
50 0 ::1/128 # IPv6 环回(最高优先级)
40 1 ::/0 # IPv6 默认路由
30 2 2002::/16 # 6to4 隧道
5 5 2001::/32 # Teredo 隧道
3 13 fc00::/7 # 唯一本地地址
1 11 fec0::/10 # 站点本地地址(已废弃)
1 12 3ffe::/16 # 6bone(历史)
1 3 ::ffff:0:0/96 # IPv4 映射地址

默认行为:

  • Windows 默认优先使用 IPv6(::/0 优先级 40)
  • IPv4 映射地址优先级较低(::ffff:0:0/96 优先级 1)

配置方法#

方法一:设置 IPv4 优先#

Terminal window
# 提升 IPv4 映射地址的优先级
netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 100 4

验证配置:

Terminal window
netsh interface ipv6 show prefixpolicies

预期结果:

优先顺序 标签 前缀
---------- ----- --------------------------------
100 4 ::ffff:0:0/96 # IPv4 优先级最高
50 0 ::1/128
40 1 ::/0 # IPv6 优先级降低
30 2 2002::/16
5 5 2001::/32
3 13 fc00::/7
1 11 fec0::/10
1 12 3ffe::/16
1 3 ::/96

方法二:恢复 IPv6 优先#

Terminal window
# 恢复 IPv6 默认优先级
netsh interface ipv6 set prefixpolicy ::/0 100 1

验证配置:

Terminal window
netsh interface ipv6 show prefixpolicies

预期结果:

优先顺序 标签 前缀
---------- ----- --------------------------------
100 1 ::/0 # IPv6 优先级最高
100 4 ::ffff:0:0/96 # IPv4 同优先级
50 0 ::1/128
30 2 2002::/16
5 5 2001::/32
3 13 fc00::/7
1 11 fec0::/10
1 12 3ffe::/16
1 3 ::/96

方法三:自定义优先级策略#

Terminal window
# 语法:netsh interface ipv6 set prefixpolicy <前缀> <优先级> <标签>
# 示例:为特定 IPv6 段设置高优先级
netsh interface ipv6 set prefixpolicy 240e::/20 90 6
# 示例:禁用某个 IPv6 隧道
netsh interface ipv6 set prefixpolicy 2001::/32 0 5

方法四:恢复默认设置#

Terminal window
# 删除自定义策略,恢复系统默认
netsh interface ipv6 delete prefixpolicy ::ffff:0:0/96
netsh interface ipv6 delete prefixpolicy ::/0
# 或重置整个 IPv6 配置
netsh interface ipv6 reset

注意: reset 命令会重置所有 IPv6 配置,包括静态地址和 DNS!

持久化配置(重启后保持)#

方案一:创建启动脚本#

步骤 1: 创建批处理文件 set_ipv4_priority.bat

Terminal window
@echo off
REM 设置 IPv4 优先
netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 100 4
echo IPv4 priority configured successfully!
pause

步骤 2: 将脚本添加到任务计划程序

  1. 搜索并打开”任务计划程序”
  2. 创建基本任务 → 命名为”Set IPv4 Priority”
  3. 触发器:计算机启动时
  4. 操作:启动程序 → 选择上面的 bat 文件
  5. 勾选”使用最高权限运行”

验证测试#

测试 1:检查网站 IPv6 支持#

Terminal window
# 访问仅 IPv6 的网站
curl -6 http://ipv6.google.com
# 或使用浏览器访问
# https://test-ipv6.com

测试 2:查看实际使用的协议#

Terminal window
# 查看活动的 TCP 连接
netstat -an | findstr :80
# 观察远程地址是 IPv4 还是 IPv6 格式

测试 3:DNS 解析测试#

Terminal window
# 查询域名的 IPv4 记录
nslookup example.com
# 查询域名的 IPv6 记录
nslookup -query=aaaa example.com

快速参考表#

操作命令说明
查看配置netsh interface ipv6 show prefixpolicies显示当前优先级
IPv4 优先netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 100 4提升 IPv4 优先级
IPv6 优先netsh interface ipv6 set prefixpolicy ::/0 100 1恢复 IPv6 优先
删除策略netsh interface ipv6 delete prefixpolicy <前缀>删除自定义策略
完全重置netsh interface ipv6 reset重置所有 IPv6 配置

参考资料#

Windows 10 IPv4/IPv6网络优先级设置与切换方法
https://blog.xeu.asia/posts/win10-network-priority/
作者
Xeu
发布于
2025-01-09
许可协议
CC BY-NC-SA 4.0