影子论坛

搜索
夜间模式◐

Windows网页有时打不开的问题(启用ipv6后),优先使用ipv4
[工作效率] · summer · 发布于 · 2020-07-01 · 58 次点击 · 复制地址

倔强青铜Ⅲ   summer  · 2020-07-01 18:16:07 · 显示全部楼层 · 阅读
问题描述

最近在路由器把ipv6启用之后,发现电脑上有些网页打不开了。效果大概就是连接超时,或者连接失败。比如最近网易云音乐网页版就经常打不开,从浏览器查看会问题是ERR_CONNECTION_TIMED_OUT或者ERR_FAILED(有时有其他错误)。但是切换4G或者在网卡中禁用IPv6之后就能正常打开。
问题排查

在cmd中简单ping一下网页主机(也可以用nslookup),会发现music.163.com解析结果为一个ipv6地址。猜测是当地ipv6线路质量不佳或运营商ipv6路由问题导致该服务器断续不可达。

这是由于windows有时候会在启用ipv6后优先请求ipv6地址导致的。目前国内ipv6正在加速普及,但是很多网站的ipv6支持还不如ipv4稳定,我们考虑在保留网卡ipv6功能的基础上,让系统优先访问ipv4资源。
解决方法

参考这篇博客( https://www.cnblogs.com/qishine/p/12075916.html )的方法,找到了官方推荐的方式让Windows优先访问ipv4资源(至少可以做到解析时优先使用A记录而非AAAA记录)。

    当前主流的Windows系统(从Windows 7之后)都会同时使用ipv6和ipv4,并且优先使用ipv6。当你ping另一个服务器的时候就能看到,优先使用的是ipv6进行通信。由于能够在DNS中解析到AAAA记录,所以本地服务器会优先使用ipv6进行通信,对方也会回应。

    微软推荐是修改注册表来实现,而不是禁用ipv6。简单的从网卡属性里去掉ipv4的钩,并不能禁用ipv6。在以下位置添加一个REG_DWORD值,HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents

    具体配置参数含义如下图:

8976717-0e988d7894cbd7b6.png
    默认没有这个键值的时候相当于全0,禁用ipv6是全1,不过并不推荐禁用。只要根据我们的具体需求配置对应位置的参数就可以了。我们目前需要的就是将PreferIpv4这个位置1。高位在下方,PreferIpv4在从高到低的第3位,对应的二进制值就是00100000。转换成16进制0x20或者10进制32,对应写入注册表重启就可以了。将DisabledComponents设置成32,并重启计算机。

    如果想要修改回来,只要将DisabledComponents改成0,并重启就可以了。全程不需要修改网卡属性上的ipv6设置。

注意事项

1. 应用本方法前,请先确认问题的确是由于ipv6导致的。具体确认方法可以是将无法正常访问的域名放到ping或nslookup中,看解析结果是否为ipv6地址。然后在网络适配器选项中——选择当前连接——右键属性——暂时取消Internet协议版本6的勾选,应用。然后再尝试刷新网页看看是否恢复。若此时访问正常,则可以尝试上文的办法。

2. 修改注册表中该键值后,需要重新启动电脑。(重新禁用启用网卡是无效的)

3. 写本文时,测试的Windows版本为Windows10 1903(18362),上述方法有效。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表