V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Songxwn
V2EX  ›  分享创造

Windows 上的 IPv6

  •  1
     
  •   Songxwn · 2023-06-15 21:50:38 +08:00 · 2230 次点击
    这是一个创建于 528 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Windows 和 EUI-64

    EIU-64

    通常情况下,链路本地地址的接口 ID 是由 MAC 地址来生成的,标准叫做 EUI-64 。( RFC 2373 ) 生成的 64bit 接口 ID,叫做接口标识符。 SLAAC (无状态分配)所产生的地址,其接口 ID 也会使用接口标识符。与链路本地地址的接口 ID 一样。 而这只是在 Windows Vista 和 Windows 2008 之前的情况下。 为了安全,Windows 开始使用了随机化接口 ID 和临时地址。( RFC 3041 )

    随机标识符 /接口 ID

    由于 EUI-64 生成的接口标识符,是由 MAC 地址生成。所以很容易根据 IPv6 地址来推断出设备的 MAC 地址。 EUI-64 是将 48bit 的 MAC 地址,其第七位取反,然后中间填充 FFFE 组成 64bit 的接口 ID 。 所以 Windows 会随机生成 64bit 的接口标识符。看下面的输出,链路本地地址明显是和 MAC 地址无关的。 此地址是固定,一般生成之后,不会改变。

    
     C:\Users\admin> ipconfig /all 
       描述. . . . . . . . . . . . . . . : Intel(R) Wi-Fi 6 AX200 160MHz
       物理地址. . . . . . . . . . . . . : 46-68-5C-AA-41-11
       DHCP 已启用 . . . . . . . . . . . : 是
       自动配置已启用. . . . . . . . . . : 是
       本地链接 IPv6 地址. . . . . . . . : fe80::1e2:5910:14f3:a9d5%13(首选)
       
    

    临时地址

    由于 SLAAC 产生的地址的接口 ID ,是接口标识符的,所以后 64bit 是基本不变的,这样很容易被跟踪。 所以需要临时地址。 临时地址也是一样随机生成 64bit 接口 ID ,用于主机作为源 IP 主动访问网站和应用。但为了安全,会经常变化。 如在接口重新连接的时候,或者临时 IPv6 生存期到期的时候。会重新随机生成另一个临时 IPv6 地址。 在某种情况下,你会看到多个临时 IPv6 地址。这是因为旧的临时地址过期的时候,旧地址还有建立的连接。

    查看 IPv6 协议配置

    使用 Powershell 命令 get-netipv6protocol

    
    DefaultHopLimit               : 128
    NeighborCacheLimit(Entries)   : 256
    RouteCacheLimit(Entries)      : 4096
    ReassemblyLimit(Bytes)        : 262676960
    IcmpRedirects                 : Enabled
    SourceRoutingBehavior         : DontForward
    DhcpMediaSense                : Enabled
    MediaSenseEventLog            : Disabled
    MldLevel                      : All
    MldVersion                    : Version2
    MulticastForwarding           : Disabled
    GroupForwardedFragments       : Disabled
    RandomizeIdentifiers          : Enabled  //随机接口 ID 开启
    AddressMaskReply              : Disabled
    UseTemporaryAddresses         : Enabled  //临时 IPv6 地址开启
    MaxTemporaryDadAttempts       : 3        //临时 IPv6 的重复地址检测尝试次数
    MaxTemporaryValidLifetime     : 7.00:00:00 //临时地址最大有效时间。
    MaxTemporaryPreferredLifetime : 7.00:00:00
    TemporaryRegenerateTime       : 00:00:05
    MaxTemporaryDesyncTime        : 00:10:00
    DeadGatewayDetection          : Enabled
    
    

    SLAAC 的 DNS 服务器地址分配--RDNSS

    源于一个较新的 IPv6 标准(RFC 8106)。从 Windows 10 1703 开始,Windows 支持使用无状态获取 DNS 服务器了。 不过,DHCPv6 获取的 DNS 服务器优于通过 RA 报文获取的 DNS 服务器。 Android 从 4.2 开始支持,iOS 从 4.1 开始支持,MacOS 从 10.7 开始支持。

    PS:Android 至今都不支持 DHCPv6 ,可能是为了安全考虑。

    来源: https://en.wikipedia.org/wiki/Comparison_of_IPv6_support_in_operating_systems

    参考

    https://datatracker.ietf.org/doc/html/rfc8106 https://www.networkacademy.io/ccna/ipv6/ipv6-on-windows https://docs.microsoft.com/en-us/powershell/module/nettcpip/get-netipv6protocol?view=windowsserver2022-ps

    PS:随机标识符和临时地址,其他系统也会使用,如 MacOS 从 10.7 也开始使用了,Android iOS Linux 等系统较新版本可能会支持。

    个人博客

    https://songxwn.com/ipv6-Windows/

    8 条回复    2023-06-17 17:54:14 +08:00
    Jirajine
        1
    Jirajine  
       2023-06-15 22:54:26 +08:00
    有没有玩过部署纯 ipv6 内网,ipv4 的访问通过 NAT64 实现。
    但 ipv6 一直有两个痛点没有好的办法解决:一是大部分应用不支持动态前缀,如 docker 。二是无状态的地址分配无法管理,在内网针对不同设备分流流量非常难搞。
    lcdtyph
        2
    lcdtyph  
       2023-06-16 07:50:55 +08:00 via iPhone
    @Jirajine
    无状态 v6 地址分流可以用 mac 地址做
    应用不支持动态前缀很蛋疼,我也不知道有没有好的方案,我现在是用 nat6
    Jirajine
        3
    Jirajine  
       2023-06-16 12:35:15 +08:00
    @lcdtyph EUI64 产生的地址你可以手动添加到列表上,那隐私扩展产生的随机地址呢?
    这里开启有状态的 dhcpv6 也不行,纯 dhcpv6 下 Android 没法用。
    lcdtyph
        4
    lcdtyph  
       2023-06-16 12:42:42 +08:00 via iPhone
    @Jirajine
    不是啊,直接匹配 mac 地址啊。跟 ip 层地址没关系,因为你要分流的是设备
    Jirajine
        5
    Jirajine  
       2023-06-16 13:12:12 +08:00
    @lcdtyph 哦哦,这样确实可以。
    不过 mac 地址在很多设备上也是随机化的,虽然同网络一般不会变,稍微麻烦一点点。
    TsukiMori
        6
    TsukiMori  
       2023-06-17 02:17:17 +08:00 via Android
    我目前还好 多 ISP 就一个有 v6 不然 mwan3 没法配
    testcaoy7
        7
    testcaoy7  
       2023-06-17 17:33:50 +08:00
    @Jirajine 很想这么做,但是不会
    Jirajine
        8
    Jirajine  
       2023-06-17 17:54:14 +08:00
    @testcaoy7 如果我的局域网完全自用不需要处理访客设备,可能会考虑折腾一下。国外很多 ISP 已经开始只提供接入 nat46 的纯 ipv6 网络了,正常使用还是没问题的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1067 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:18 · PVG 07:18 · LAX 15:18 · JFK 18:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.