个人知识库
Author: 刘杰文, Date: 2023-10-18 23:43:00 +0800, Categories: , Tags: Windows FirewallIPv6PingICMPv6
为了方便查看情况,建议使用Wireshark进行抓包。
首先要确认你有获取到IPv6地址,然后可以上测试网站,确认自己的地址是可以上网的(新手推荐)。
进入终端获取地址:
C:\Users\HP\>ipconfig
如果有开隐私选项,这里会有临时地址,建议测试临时地址。
如果你在控制面板的适配器选项卡发现IPv4可上网,IPv6是“无Internet连接”,那么此时可以打开Wireshark,筛选器设置为icmpv6
,你可以看到有个同前缀的地址作为包的源地址向我的地址发送请求并且大量失败,显示“Destination has no route”(大意:没有到[我的地址]的路由)。没有成功建立路由,这就是为什么不可上网。
顺便说一句,现在的浏览器一般都会优先尝试使用IPv6上网,所以这种有IPv6地址但无互联网连接的情况就是上网加载慢,因为总是使用IPv6然后(显然)超时再改用IPv4,多了个等待时间。
这种情况一般是计算机不让外网ping,即防火墙拦截回显,所以外面的设备听不到消息因为是不存在。转到Windows防火墙高级页面,由于回显是我的设备输出,也就是对应防火墙的出站规则,所以我们转到“出站规则”。网络上的说法是“文件和打印机共享(回显请求) - ICMPv6-Out”的远程地址从“本地子网”修改成“任意”即可。我的话是尝试了把所有ICMPv6的规则禁用然后新建一条全部允许的规则。
新建规则: 在右侧出站规则部分,点击新建规则,然后选择自定义,后面全部放最开,协议选ICMPv6。创建完启用就行了。
现在转到Wireshark,发现至少有一条从同前缀的某个源地址到本地的目的地址的成功通过了。我还遇到了别的不通过,貌似Length大于100的就不行,小于100的就行。后来不知到怎么就都行了。反正这么搞完就能IPv6上网了,有互联网连接,终于能ping了。
在一开始ping是“目标不可达”
这期间我还尝试了一条命令(需要使用管理员权限):
C:\windows\system32>netsh firewall set icmpsetting type=all mode=enable
重要信息: 已成功执行命令。
但是,"netsh firewall" 已弃用;
请改用 "netsh advfirewall firewall" 。
有关使用 "netsh advfirewall firewall" 命令
而非 "netsh firewall" 的详细信息,请参阅
https://go.microsoft.com/fwlink/?linkid=121488 上的 KB 文章 947709。
确定。
可以看看命令执行结果:
C:\windows\system32>netsh firewall show icmpsetting
域 配置文件的 ICMP 配置:
模式 类型 描述
-------------------------------------------------------------------
启用 2 允许出站数据包太大
启用 3 允许不达出站目标
启用 4 允许出站源抑制
启用 5 允许重定向
启用 8 允许入站回显请求
启用 9 允许入站路由器请求
启用 11 允许出站超时
启用 12 允许出站参数错误
启用 13 允许入站时间戳请求
启用 17 允许入站掩码请求
标准 配置文件的 ICMP 配置:
模式 类型 描述
-------------------------------------------------------------------
启用 2 允许出站数据包太大
启用 3 允许不达出站目标
启用 4 允许出站源抑制
启用 5 允许重定向
启用 8 允许入站回显请求
启用 9 允许入站路由器请求
启用 11 允许出站超时
启用 12 允许出站参数错误
启用 13 允许入站时间戳请求
启用 17 允许入站掩码请求
重要信息: 已成功执行命令。
但是,"netsh firewall" 已弃用;
请改用 "netsh advfirewall firewall" 。
有关使用 "netsh advfirewall firewall" 命令
而非 "netsh firewall" 的详细信息,请参阅
https://go.microsoft.com/fwlink/?linkid=121488 上的 KB 文章 947709。
测试网站推荐:ipw.cn
。这家网站还能测试ping,转到ping测试页面,输入自己本地的IPv6地址(比如临时地址),稍等一会,如果有地方成功了,那就可以了,目的达到了。