V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
abcbuzhiming
V2EX  ›  宽带症候群

windows ipv6 被抨击该如何解决?

  •  
  •   abcbuzhiming · 2023-12-22 09:21:47 +08:00 · 4593 次点击
    这是一个创建于 366 天前的主题,其中的信息可能已经有所发展或是发生改变。
    家里的 pc ,过一段时间,就会出现一次 ipv6“丢失”现象,其表现是,本地查询 ipv6 地址是存在的,但是访问 ipv6 检测网站,提示你没有 ipv6 ,对外使用 ipv6 ping ,ping 不通,外部用 ipv6 ping 进来,也 ping 不通。但是此时 ipv4 的连接一切正常。

    刚开始怀疑路由器或者猫的问题,但是后来把路由器改成了 AP 模式,还是存在。于是排除路由器查猫,未找到原因,后来注意到同样在网络中的手机,平板,没有这个现象。后来有一天,终于注意到,一旦在 ipconfig/all 命令下,出现某个临时 ipv6 地址后面有个括号:受到抨击。只要出现这个状态,ipv6 就失效了。

    网上查了一下,发现这似乎是 windows 独有的问题,是 ipv6 临时地址租期快到但是验证还未完全失灵时出现的现象。但是似乎找不到解决办法,除了把网卡重启没有别的办法。这没办法解决吗?
    29 条回复    2023-12-31 00:18:33 +08:00
    namaste
        1
    namaste  
       2023-12-22 09:24:05 +08:00
    感谢 op, 刚巧碰到相同的情况,原来是这个原因,蹲了解决办法
    0TSH60F7J2rVkg8t
        2
    0TSH60F7J2rVkg8t  
       2023-12-22 09:26:28 +08:00   ❤️ 22
    这个所谓“抨击”其实是微软的问题, “受到抨击”是“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
    0TSH60F7J2rVkg8t
        3
    0TSH60F7J2rVkg8t  
       2023-12-22 09:34:53 +08:00
    补充一个,这里有个永久关闭这个临时地址的方法:
    https://lonesysadmin.net/2018/01/23/disable-windows-ipv6-temporary-addresses/
    billccn
        4
    billccn  
       2023-12-22 09:53:04 +08:00
    希望微软以后用 ChatGPT 搞本地化,之前 Windows XP 有直接机翻出来的中文(英文语法,把每个单词还原成英文才能理解),Vista 有个“体验索引”( Experience Index ),今天看到这个抨击真是笑掉大牙。下次和微软的朋友吃饭,问问他们多少代码收到抨击。
    HomeZane
        5
    HomeZane  
       2023-12-22 09:57:13 +08:00
    家里的话,是不是可以在路由器把 ipv6 租期设置为永久呀
    peasant
        6
    peasant  
       2023-12-22 10:00:26 +08:00   ❤️ 1
    因为要用台式机访问某个 IPv6 设备,需要添加白名单,用的固定后缀的匹配方式,就把 windows 的临时地址和随机地址给关了,用了很长时间了,一切都正常。

    PowerShell

    禁止临时地址
    Set-NetIPv6Protocol -UseTemporaryAddresses Disabled
    禁止随机地址
    Set-NetIPv6Protocol -RandomizeIdentifiers Disabled
    fengyaochen
        7
    fengyaochen  
       2023-12-22 10:19:45 +08:00
    只要路由器的 V6 稳定就行了,剩下就是用 socat 或者 lucky 进行 V6 转 V4 的端口转发,何必用 windows 的 IPV6 直连呢
    abcbuzhiming
        8
    abcbuzhiming  
    OP
       2023-12-22 11:09:08 +08:00
    @ahhui 不关闭临时地址的话,就没有办法了吗?这算不算 windows 的 bug ?
    @fengyaochen 你说的应该是 openwrt 中的工具吧,很遗憾我的路由器没有刷 openwrt ,所以用不了这个
    acbot
        9
    acbot  
       2023-12-22 11:11:43 +08:00   ❤️ 2
    根据我的观察,正常情况下系统在临时地址失效前就会新生成一个临时地址,所以你这个问题并不是临时地址机制造成的,而是应该检查路由器 DHCPv6 或 RA 通告,大概率是这里有问题! ICMPv6 对于 IPv6 地址生成和维护是非常重要的,没事别去动路由器和设备防火墙上相关设置。
    beyondstars
        10
    beyondstars  
       2023-12-22 11:22:07 +08:00   ❤️ 5
    哈哈哈 「抨击」这个词确实有点好笑 我一看还以为数 windows 通过口诛笔伐的方式来表达对 ipv6 的抨击
    jsq2627
        11
    jsq2627  
       2023-12-22 13:50:03 +08:00
    列两个可能原因:
    1. 光猫或者路由器设置了定时重启。关闭定时重启即可。
    2. 光猫或者路由器的 ICMPv6 RA 实现存在 bug 。可以尝试光猫桥接路由器拨号,或者反过来光猫拨号路由器桥接,看看哪种情况下会出问题。

    不太像是临时地址造成的。
    jsq2627
        12
    jsq2627  
       2023-12-22 13:53:05 +08:00
    @acbot 正解。路由器获取到新 ipv6 前缀后,未把旧前缀通告立即过期,就会在 Windows 出现这个问题。
    为什么同局域网下其他系统、设备没问题,因为 macOS/iOS/linux 都能够在接收到新地址后,优先使用新地址,无论旧地址是否 deprecated 。而 Windows 则一直使用旧地址,直到地址过期。
    pcslide
        13
    pcslide  
       2023-12-22 15:30:34 +08:00
    路由或者猫的 ipv6 的 bug ,和 windows 没半毛线关系。一般原因都是猫或路由器在 pd 变动的时候没有自动添加或更新相对应的路由策略到路由表。至于为什么切换到 ap 模式能解决,因为 ap 模式相当于 ipv6 passthrough 。至于为什么大家都喜欢甩锅给 windows 的 ipv6 ,因为家用 ipv4 主要通过 NAT ,不需要额外路由策略,所以不会出现获得 ipv4 地址但连不通的。
    raysonx
        14
    raysonx  
       2023-12-22 15:35:34 +08:00
    2 楼的问答疑似复制 https://www.zhihu.com/question/316884179
    aMR
        15
    aMR  
       2023-12-22 15:53:03 +08:00
    听起来像是路由的主动 RA 间隔太久了,最大间隔不要超过 Preferred ,可以抓个包看看 RA 包到底收到了没
    nothingistrue
        16
    nothingistrue  
       2023-12-22 15:59:08 +08:00   ❤️ 1
    @ahhui #2 查了谷歌翻译当中的词典,deprecate 的原义就是不赞成、藐视、抨击,并没有「已过期但还能用」的含义,这是计算机科学硬生生给 deprecated 加的含义。所以这不能怪翻译,英文原意就是错的。

    不过另一方面,Java 的中文社区翻译,早几十年就把 deprecated 意译成已过时或者已弃用了,微软竟然不知道,也足以见以前的微软企业文化有多么自封。
    0TSH60F7J2rVkg8t
        17
    0TSH60F7J2rVkg8t  
       2023-12-22 16:18:21 +08:00
    @raysonx 不用疑似,最后一行引用了 source ,就是这个地址里的。
    YaD2x
        18
    YaD2x  
       2023-12-22 16:24:33 +08:00   ❤️ 1
    这最多是翻译的问题 还扯到中文严谨性不如英文。。
    abcbuzhiming
        19
    abcbuzhiming  
    OP
       2023-12-22 16:50:37 +08:00
    @acbot 如何检查呢?我这边没有那么复杂的设备,就是路由和猫,路由已经改成 AP 了,问题仍然存在,猫的话我就是电信的家用光猫,我有不同地方的三个设备,都有类似现象,该如何排查?


    @jsq2627 目前判定是猫有问题,因为我把路由器给桥接成 AP 了,还是出现。

    我目前猫和路由器都没有设置过定时重启。

    但是我疑惑的是,不是一台猫,因为我有不同位置的 3 个电信宽带,用的猫型号不同,但是都出现了类似问题,总不能说这些猫都 ICMPv6 RA 实现存在 bug 吧?是否可能是猫的设置有问题呢?

    “Windows 则一直使用旧地址,直到地址过期”
    Windows 的这个特性看来是没法改的,然后公告过期就是来自路由设置的 ICMPv6 RA 通告吗?
    acbot
        20
    acbot  
       2023-12-22 20:08:08 +08:00
    @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 查看是否能对应
    veSir
        21
    veSir  
       2023-12-22 22:28:08 +08:00
    我认为是 windows 的问题, 我最近也出现这种现象, 一般为 24 小时就会出现, 并且还有一些群友也有这种现象.

    我拨号路由是 OpenWrt.
    flynaj
        22
    flynaj  
       364 天前 via Android
    就是 IPv6 新老地址更替的问题,所用设备都有这个问题,只是很多设备切换很快,你没有感觉到。出现这个问题的根本原因是电信宽带 48 小时会强制断开,解决方法很简单就是晚上睡觉的时候定时重播,openwrt 在计划任务里面填上
    10 4 */2 * * /sbin/ifup wan 每隔一天 4:10 重播
    kdzhq443
        23
    kdzhq443  
       364 天前
    所有家庭公众宽带拨号都有时长问题,在宽带账号重新拨号后,重启联网设备或网卡就可以获取新的有效 ip ,
    abcbuzhiming
        24
    abcbuzhiming  
    OP
       362 天前
    @acbot 请问系统防火墙是否允许 icmp v6 这个,我查了我多台电脑的防火墙,从 windows10 到 windows11 ,他们默认配置,除了 [ICMP 回显请求] ,是关闭的。其它的 ICMP ,包括“多播侦听程序报告”,“多播侦听程序查询”,“多播侦听程序完成”,“邻居发现播发”,“邻居发现请求”,“路由器播发”,“路由器请求”。这些都是开着的,RA 涉及的防火墙,是否是“路由器播发”这个?
    2.光猫我进入超管了,现在的设置为“地址信息是否通过 DHCP” 为否,“其他信息是否通过 DHCP 获取”为是,按网上的说法,我现在处于 DHCPv6 Stateless 模式。
    3.抓包目前还未找到合适工具,请问用什么工具在这种情况下抓包比较好。
    acbot
        25
    acbot  
       362 天前
    @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) 报文。
    veSir
        26
    veSir  
       361 天前
    之前之前问题相同, 更新 OpenWrt 版本后已解决.
    lxll
        27
    lxll  
       360 天前 via Android
    给前缀 Preferred Time 和 Valid Time 设置成一样,跳过 Deprecated 状态
    abcbuzhiming
        28
    abcbuzhiming  
    OP
       359 天前
    @lxll 你说的这个在哪里能设置?
    lxll
        29
    lxll  
       357 天前 via Android
    @abcbuzhiming 企业路由一条命令的事,家用路由不清楚能不能设置。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2287 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 02:04 · PVG 10:04 · LAX 18:04 · JFK 21:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.