个人猜测,可能是跟“最长前缀匹配”有关
首先是 V 站曾经有人发过的《检验 IPv6 的最长前缀匹配机制》
/t/779881 里面提到 RFC 3484 。
RFC 3484 的第五章规则 3 提到,不要使用已过期的地址。
结合附言的现象,我猜可能因为禁用后导致 240e 前缀的地址实际上过期了,于是主动把默认源地址改成 2409 的前缀去访问,当 240e 恢复之后,由于 240e 和 2409 是同类型的公网地址,所以不会主动把默认源地址切换回去。
至于为什么重启电脑、禁用网卡再恢复(两者相都会重设网卡设置)后会优先选择 240e ,个人猜测,可能与前缀有关。
2409 的二进制:0010010000001001
240e 的二进制:0010010000001110
排除掉前面相同的部份,可以得到剩下的不同部份:
9: 1001
e: 1110
以 AND 操作做匹配的话,9 的前缀只能匹配 1 个 bit ,E 的前缀可以再匹配 3 个 bit 。
然后 Windows 简单粗暴地认为前缀 E 更加适合。
这是单纯靠猜,我也无法保证一定就是这样。如果有三线接入的话,可以再看看 2408 、2409 、240e 共存时会不会也这样。