1
namaste 316 天前
感谢 op, 刚巧碰到相同的情况,原来是这个原因,蹲了解决办法
|
2
0TSH60F7J2rVkg8t 316 天前 21
这个所谓“抨击”其实是微软的问题, “受到抨击”是“Deprecated” 的很蹩脚的中文翻译罢了。这个翻译真的很蹩脚,因为你完完全全无法从“受到抨击”联想到它的英文单词是“Deprecated”。 所以在计算机科学方面,英文的表达要比还是要比中文严谨一些。
按照 RFC 文档的规定 IPv6 地址有四种状态是分别是“Perferred”, "Valid","Deprecated", "Invalid". 当 IPv6 地址的在 Perferred Time 之内时 IPv6 地址状态是“Perferred”, 当 IPv6 地址的生命周期超过了 Preferred Time 但是没有超过 Valid Time 时 IPv6 地址的状态是“Deprecated”, 在 win7/win8 中这个英文单词被翻译成“受到抨击”。无论"Perferred"还是“Deprecated”, IPv6 地址都是“Valid”的, 当 IPv6 地址的生命周期超过 Valid Time 之后,IPv6 地址的状态是“Invalid”. 说以 Win7 出现某个 IPv6 地址显示“受到抨击”, 就是说这个 Ipv6 地址的 Lifetime 超过了 Preferred Time 却没有超过 Valid Lifetime 这种情形。 那么为什么会有 IPv6 临时地址呢? 临时地址的地址是随机生成的,主要作用是对外通讯使用,他最大的优点就是没有暴露本机 mac 地址。因为 linux 和 mac 系统在默认下是使用 EUI-64 来生成 IPv6 地址,而 windows 是默认随机生成(其实都可以改) 通俗易懂的说吧,临时地址是为了保证你安全而用到的,由于地址生成规则的统一性,也没有 NAT 规则来转换,本机 MAC 地址便赤裸裸的暴露在外面这样很不安全。 这里需要注意,如果两个 IPv6 地址(IPv6 和 IPv6 临时地址)都有时,对外通信时用的是临时的 IPv6 地址。 Windows XP 、Vista 、Windows 7 和 Windows 10 系统都会自动得到一个临时的 IPv6 地址。可通过以下命令禁止自动获取:netsh interface ipv6 setprivacy state=disable 重启网卡后再查看就没有那个临时的地址了,这时通信时用的是 IPv6 地址。 这个是 windows 由于 IPv6 地址不够匿名,而搞出来的地址随机化(后缀不同)…… windows 上两个临时 IPv6 地址会发生冲突,所以如上文所示,显示“受到抨击”,英文更准确是“ Deprecated ”,则会导致无法上网。 source: https://www.zhihu.com/question/316884179 |
3
0TSH60F7J2rVkg8t 316 天前
补充一个,这里有个永久关闭这个临时地址的方法:
https://lonesysadmin.net/2018/01/23/disable-windows-ipv6-temporary-addresses/ |
4
billccn 316 天前
希望微软以后用 ChatGPT 搞本地化,之前 Windows XP 有直接机翻出来的中文(英文语法,把每个单词还原成英文才能理解),Vista 有个“体验索引”( Experience Index ),今天看到这个抨击真是笑掉大牙。下次和微软的朋友吃饭,问问他们多少代码收到抨击。
|
5
HomeZane 316 天前
家里的话,是不是可以在路由器把 ipv6 租期设置为永久呀
|
6
peasant 316 天前 1
因为要用台式机访问某个 IPv6 设备,需要添加白名单,用的固定后缀的匹配方式,就把 windows 的临时地址和随机地址给关了,用了很长时间了,一切都正常。
PowerShell 禁止临时地址 Set-NetIPv6Protocol -UseTemporaryAddresses Disabled 禁止随机地址 Set-NetIPv6Protocol -RandomizeIdentifiers Disabled |
7
fengyaochen 316 天前
只要路由器的 V6 稳定就行了,剩下就是用 socat 或者 lucky 进行 V6 转 V4 的端口转发,何必用 windows 的 IPV6 直连呢
|
8
abcbuzhiming OP @ahhui 不关闭临时地址的话,就没有办法了吗?这算不算 windows 的 bug ?
@fengyaochen 你说的应该是 openwrt 中的工具吧,很遗憾我的路由器没有刷 openwrt ,所以用不了这个 |
9
acbot 316 天前 2
根据我的观察,正常情况下系统在临时地址失效前就会新生成一个临时地址,所以你这个问题并不是临时地址机制造成的,而是应该检查路由器 DHCPv6 或 RA 通告,大概率是这里有问题! ICMPv6 对于 IPv6 地址生成和维护是非常重要的,没事别去动路由器和设备防火墙上相关设置。
|
10
beyondstars 316 天前 5
哈哈哈 「抨击」这个词确实有点好笑 我一看还以为数 windows 通过口诛笔伐的方式来表达对 ipv6 的抨击
|
11
jsq2627 316 天前
列两个可能原因:
1. 光猫或者路由器设置了定时重启。关闭定时重启即可。 2. 光猫或者路由器的 ICMPv6 RA 实现存在 bug 。可以尝试光猫桥接路由器拨号,或者反过来光猫拨号路由器桥接,看看哪种情况下会出问题。 不太像是临时地址造成的。 |
12
jsq2627 316 天前
@acbot 正解。路由器获取到新 ipv6 前缀后,未把旧前缀通告立即过期,就会在 Windows 出现这个问题。
为什么同局域网下其他系统、设备没问题,因为 macOS/iOS/linux 都能够在接收到新地址后,优先使用新地址,无论旧地址是否 deprecated 。而 Windows 则一直使用旧地址,直到地址过期。 |
13
pcslide 316 天前
路由或者猫的 ipv6 的 bug ,和 windows 没半毛线关系。一般原因都是猫或路由器在 pd 变动的时候没有自动添加或更新相对应的路由策略到路由表。至于为什么切换到 ap 模式能解决,因为 ap 模式相当于 ipv6 passthrough 。至于为什么大家都喜欢甩锅给 windows 的 ipv6 ,因为家用 ipv4 主要通过 NAT ,不需要额外路由策略,所以不会出现获得 ipv4 地址但连不通的。
|
14
raysonx 316 天前
2 楼的问答疑似复制 https://www.zhihu.com/question/316884179
|
15
aMR 316 天前
听起来像是路由的主动 RA 间隔太久了,最大间隔不要超过 Preferred ,可以抓个包看看 RA 包到底收到了没
|
16
nothingistrue 316 天前 1
@ahhui #2 查了谷歌翻译当中的词典,deprecate 的原义就是不赞成、藐视、抨击,并没有「已过期但还能用」的含义,这是计算机科学硬生生给 deprecated 加的含义。所以这不能怪翻译,英文原意就是错的。
不过另一方面,Java 的中文社区翻译,早几十年就把 deprecated 意译成已过时或者已弃用了,微软竟然不知道,也足以见以前的微软企业文化有多么自封。 |
17
0TSH60F7J2rVkg8t 316 天前
@raysonx 不用疑似,最后一行引用了 source ,就是这个地址里的。
|
18
YaD2x 316 天前 1
这最多是翻译的问题 还扯到中文严谨性不如英文。。
|
19
abcbuzhiming OP @acbot 如何检查呢?我这边没有那么复杂的设备,就是路由和猫,路由已经改成 AP 了,问题仍然存在,猫的话我就是电信的家用光猫,我有不同地方的三个设备,都有类似现象,该如何排查?
@jsq2627 目前判定是猫有问题,因为我把路由器给桥接成 AP 了,还是出现。 我目前猫和路由器都没有设置过定时重启。 但是我疑惑的是,不是一台猫,因为我有不同位置的 3 个电信宽带,用的猫型号不同,但是都出现了类似问题,总不能说这些猫都 ICMPv6 RA 实现存在 bug 吧?是否可能是猫的设置有问题呢? “Windows 则一直使用旧地址,直到地址过期” Windows 的这个特性看来是没法改的,然后公告过期就是来自路由设置的 ICMPv6 RA 通告吗? |
20
acbot 316 天前
@abcbuzhiming
1. 检查系统防火墙 icmpv6 是否 允许 (根据你的描述大概率这里没问题,不过也得查一下) 2. 检查光猫 IPv6 中 两个标志位 M ( Managed )和 O ( Other )是如何设置的,是否可以修改,最好都设置为零 既 slaac 模式 3. 抓 icmpv6 协议包,正常情况 可以看到不断循环 134 (RA) 135 (NS) 136 (NA) 三种类型消息,其中 RA 消息非常重要一般来说网关设备 10 分钟左右必定回有。RA 消息 中 router lifetime 与 valid lifetime 值是什么,否正常,然后用 netsh interface ipv6 show addresses 查看是否能对应 |
21
veSir 316 天前
我认为是 windows 的问题, 我最近也出现这种现象, 一般为 24 小时就会出现, 并且还有一些群友也有这种现象.
我拨号路由是 OpenWrt. |
22
flynaj 315 天前 via Android
就是 IPv6 新老地址更替的问题,所用设备都有这个问题,只是很多设备切换很快,你没有感觉到。出现这个问题的根本原因是电信宽带 48 小时会强制断开,解决方法很简单就是晚上睡觉的时候定时重播,openwrt 在计划任务里面填上
10 4 */2 * * /sbin/ifup wan 每隔一天 4:10 重播 |
23
kdzhq443 315 天前
所有家庭公众宽带拨号都有时长问题,在宽带账号重新拨号后,重启联网设备或网卡就可以获取新的有效 ip ,
|
24
abcbuzhiming OP @acbot 请问系统防火墙是否允许 icmp v6 这个,我查了我多台电脑的防火墙,从 windows10 到 windows11 ,他们默认配置,除了 [ICMP 回显请求] ,是关闭的。其它的 ICMP ,包括“多播侦听程序报告”,“多播侦听程序查询”,“多播侦听程序完成”,“邻居发现播发”,“邻居发现请求”,“路由器播发”,“路由器请求”。这些都是开着的,RA 涉及的防火墙,是否是“路由器播发”这个?
2.光猫我进入超管了,现在的设置为“地址信息是否通过 DHCP” 为否,“其他信息是否通过 DHCP 获取”为是,按网上的说法,我现在处于 DHCPv6 Stateless 模式。 3.抓包目前还未找到合适工具,请问用什么工具在这种情况下抓包比较好。 |
25
acbot 313 天前
@abcbuzhiming
1. 说明系统防火墙是默认状态, 2. 光猫的 M = 0 O = 1 标记也是常规默认状态! 3. 抓包我一般就是用常规的 Wireshark 在局域网抓。直接筛选选中使用 icmpv6.type == 133 || icmpv6.type == 134 || icmpv6.type == 135 || icmpv6.type == 136 过滤就可以看到了,135 (NS) 136 (NA) 是次要的,主要看 134 (RA) 报文,该报文通常是 10 分钟间隔会主动发送一次(设备不一样可能默认值不一样),里面 M O 标记和各种 lifetime ,然后当 lifetime 到期地址失效或者是重新获取地址这个阶段系统是否发出了 133 (RS) 报文,网关设备是否响应回复了 134 (RA) 报文。 |
26
veSir 312 天前
之前之前问题相同, 更新 OpenWrt 版本后已解决.
|
27
lxll 311 天前 via Android
给前缀 Preferred Time 和 Valid Time 设置成一样,跳过 Deprecated 状态
|
28
abcbuzhiming OP @lxll 你说的这个在哪里能设置?
|
29
lxll 308 天前 via Android
@abcbuzhiming 企业路由一条命令的事,家用路由不清楚能不能设置。
|