Windows⽹页有时打不开的问题(启⽤ipv6后),优先使⽤ipv4
问题描述
最近在路由器把ipv6启⽤之后,发现电脑上有些⽹页打不开了。效果⼤概就是连接超时,或者连接失败。⽐如最近⽹易云⾳乐⽹页版就经常打不开,从浏览器查看会问题是ERR_CONNECTION_TIMED_OUT或者ERR_FAILED(有时有其他错误)。但是切换4G或者在⽹卡中禁⽤IPv6之后就能正常打开。
问题排查
解析结果为⼀个ipv6地址。猜测是当地ipv6线路质量不佳或在cmd中简单ping⼀下⽹页主机(也可以⽤nslookup),会发现music.163解析结果为⼀个ipv6地址
运营商ipv6路由问题导致该服务器断续不可达。
这是由于Windows有时候会在启⽤ipv6后优先请求ipv6地址导致的。⽬前国内ipv6正在加速普及,但是很多⽹站的ipv6⽀持还不如ipv4稳定,我们考虑在保留⽹卡ipv6功能的基础上,让系统优先访问ipv4资源。
解决⽅法
当前主流的Windows系统(从Windows 7之后)都会同时使⽤ipv6和ipv4,并且优先使⽤ipv6。当你ping另⼀个服务器的时候就能看到,优先使⽤的是ipv6进⾏通信。由于能够在DNS中解析到AAAA记录,所以本地服务器会优先使⽤ipv6进⾏通信,对⽅也会回应。
电脑主机打不开
微软推荐是修改注册表来实现,⽽不是禁⽤ipv6。简单的从⽹卡属性⾥去掉ipv4的钩,并不能禁⽤ipv6。在以下位置添加⼀个REG_DWORD
值,HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents
具体配置参数含义如下图:
DisabledComponents配置项各BIT含义解析
默认没有这个键值的时候相当于全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),上述⽅法有效。
4. 本⽂⽅法为转载。
关键词
Windows ⽹页 连接超时 ipv6 ipv4 优先