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

windows ipv6 被抨击该如何解决?

  •  
  •   abcbuzhiming · 340 天前 · 4503 次点击
    这是一个创建于 340 天前的主题,其中的信息可能已经有所发展或是发生改变。
    家里的 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  
       340 天前
    感谢 op, 刚巧碰到相同的情况,原来是这个原因,蹲了解决办法
    0TSH60F7J2rVkg8t
        2
    0TSH60F7J2rVkg8t  
       340 天前   ❤️ 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  
       340 天前
    补充一个,这里有个永久关闭这个临时地址的方法:
    https://lonesysadmin.net/2018/01/23/disable-windows-ipv6-temporary-addresses/
    billccn
        4
    billccn  
       340 天前
    希望微软以后用 ChatGPT 搞本地化,之前 Windows XP 有直接机翻出来的中文(英文语法,把每个单词还原成英文才能理解),Vista 有个“体验索引”( Experience Index ),今天看到这个抨击真是笑掉大牙。下次和微软的朋友吃饭,问问他们多少代码收到抨击。
    HomeZane
        5
    HomeZane  
       340 天前
    家里的话,是不是可以在路由器把 ipv6 租期设置为永久呀
    peasant
        6
    peasant  
       340 天前   ❤️ 1
    因为要用台式机访问某个 IPv6 设备,需要添加白名单,用的固定后缀的匹配方式,就把 windows 的临时地址和随机地址给关了,用了很长时间了,一切都正常。

    PowerShell

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

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

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


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

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

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

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

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