V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
测试工具
SmokePing
IPv6 访问测试
mikeluckybiy
V2EX  ›  宽带症候群

ipv6 的获取方式,有状态(DHCPv6) 无状态(SLAAC),选择哪个好?

  •  
  •   mikeluckybiy · 82 天前 · 1392 次点击
    这是一个创建于 82 天前的主题,其中的信息可能已经有所发展或是发生改变。

    才疏学浅,对于 ipv6 一头雾水,有状态(DHCPv6)和无状态(SLAAC)都可以获取 ipv6 ,但无状态的 ipv6 后缀都很长,有状态的 ipv6 后缀是序号数字,这两个选哪个好,有什么区别么?

    另外发现,使用有状态(DHCPv6)的方式获取 ipv6 时,安卓设备似乎无法获得 ipv6 。

    neroxps
        1
    neroxps  
       82 天前
    https://www.nullzero.co.uk/android-does-not-support-dhcpv6-and-google-wont-fix-that/
    google 好像不打算支持 DHCPv6
    家用宽带里,即使是有状态,PD 前缀还是会变的所以依然是需要依赖 DNS 来访问设备,而且家用纯二层互访应该使用 FE80 地址方便些,所以无状态已经足够,没必要用有状态了,我是这样的环境。
    cwbsw
        2
    cwbsw  
       82 天前
    SLAAC 。当上游前缀改变时,符合规范的路由器会同时广播失效前缀和新的前缀,下游设备可以无缝切换。而用 DHCPv6 的话,就算租期设定的很小,断网时间始终还是存在的。
    mikeluckybiy
        3
    mikeluckybiy  
    OP
       82 天前 via Android
    @cwbsw 怎么看租期是多少,我这边显示租期有一百多年。。。另外为什么无状态的地址太长了,有状态的地址看着舒服
    mikeluckybiy
        4
    mikeluckybiy  
    OP
       82 天前 via Android
    @neroxps 无状态的租期是多久怎么看,能设置租期么?另外,无状态的为什么地址比有状态的长很多?
    neroxps
        5
    neroxps  
       82 天前 via iPhone
    @mikeluckybiy 分配算法有关,没开隐私地址的话是按照 mac 分配的。
    无状态是 preferred time 和 valid lifetime ,靠路由 ra 组播下发 pd 前缀而已,里 ra 里面带了这两个参数的时间。
    如果过期时间太长,会导致旧的地址没释放,地址超过 15 个,获取不到新的地址。
    我之前 ros 默认配置这个时间太长了出现这种问题。
    ifconfig 可以看到这两个时间
    neroxps
        6
    neroxps  
       82 天前 via iPhone
    @cwbsw 就是奇怪我之前 ros 没有公告 RA 取消前缀。不知道是不是哪里没配置,后来我改了时间
    neroxps
        7
    neroxps  
       82 天前 via iPhone
    翻了下文档,好像 RA 公告 Pd 前缀失效是 RFC7084 协定,Mikrotik 好像没支持。
    https://forum.mikrotik.com/viewtopic.php?t=131282
    所以还是靠生存时间来确定。
    RA 公告间隔< preferred time ?
    mikeluckybiy
        8
    mikeluckybiy  
    OP
       82 天前
    @neroxps 我还是没搞懂这个租期问题,ifconfig 没有看到时间,dhcpv6 方式获取的地址和 mac 没有关系,我这个 ipv6 的租期时间应该是设置了最大值,有 100 多年才会过期,不知道会不会 ip 被强制下线更新
    neroxps
        9
    neroxps  
       82 天前
    @mikeluckybiy #8 我说无状态分配的情况下,是靠 preferred time 和 valid lifetime 决定 ip 的生存周期。这是路由 RA 公告里面的参数。

    有状态分配就是看 dhcpv6 租期了吧?我没搞过 dhcpv6 没研究,就是之前 ROS 遇到的坑,不知道为什么文档默认是 3m 的生存周期,改成 7d 和 30d 导致 linux 机器里面有 15 个 ipv6 地址,超出最大值,就拿不到新的 IPV6 地址。

    哦 还有抱歉,是我记错了,命令是 ip addr 才能查看无状态的生存周期,这个好像是根据 RA 间隔来的,收到新的 RA 公告它又会刷新的。

    mikeluckybiy
        10
    mikeluckybiy  
    OP
       82 天前
    @neroxps 懂了,无状态时我这边看到租期是 72 小时也就是 3 天,有状态时也就是目前使用的,ip addr 显示 valid_lft forever preferred_lft forever ,感觉真是永久性的定义,并且系统识别为固定地址
    neroxps
        11
    neroxps  
       82 天前
    @mikeluckybiy #10 问题是公网那边的 PD 前缀会变的,变了前缀就变。无状态如果租期是 3 天,48 小时重拨一次,可能会出现两个 ipv6 地址,不过也没问题。我之前 ros 给我配成 30 天才出问题。
    cloudsigma2022
        12
    cloudsigma2022  
       82 天前
    openwrt 谁成功用 dhcp v6 获取到 v6 ,请告诉我怎么设置
    mikeluckybiy
        13
    mikeluckybiy  
    OP
       82 天前 via Android
    @neroxps 又有个新的问题,似乎开启 dhcpv6 后安卓电视没办法访问 google 了,安卓手机和电脑都正常,已经关了 ipv6 解析,安卓电视也没有 ipv6 地址,不知道什么问题
    LnTrx
        14
    LnTrx  
       82 天前
    SLAAC + 隐私扩展 可以防止 IP 被外部暴力扫描
    huaes
        15
    huaes  
       82 天前
    @cloudsigma2022 网上教程都可以,就是有的地区离谱到只给 /64 ,所以没法 DHCP V6
    huaes
        16
    huaes  
       82 天前
    DHCP V6 会自带设备名后缀,SLAAC 完全随机会更安全一点而已。
    mikeluckybiy
        17
    mikeluckybiy  
    OP
       82 天前
    @huaes 但是使用无状态 SLAAC 之后 windows 有 2 个 2 开头的 ipv6 地址,一个是 ipv6 地址,一个是 ipv6 临时地址,这两个有什么区别?正常上网时使用的是哪个?
    huaes
        18
    huaes  
       82 天前
    @mikeluckybiy IPv6 是给你系统的,那些临时 IPv6 是给软件用的,而且临时 IPv6 不止一个,看软件申请了多少
    neroxps
        19
    neroxps  
       82 天前 via iPhone
    @mikeluckybiy 让 dns 不反会匹配规则的 AAAA 记录
    isad
        20
    isad  
       82 天前
    我的电脑 Win10 21H1 连移动发的中移杭州光猫 GS2107 ,无论是 DHCPv6 还是 SLAAC 甚至关掉临时地址,都会用几个小时就断网,这时候租期没到,网关都不可及,别的 ios 或者安卓设备就没有这个问题~~
    Atomo
        21
    Atomo  
       82 天前
    请无脑选择,无状态(SLAAC),历史的潮流谁也无法阻挡
    mikeluckybiy
        22
    mikeluckybiy  
    OP
       82 天前
    @huaes 怎么看 DHCP V6 带的设备名后缀是哪个?好像 mac 地址不是 dhcpv6 的地址
    mikeluckybiy
        23
    mikeluckybiy  
    OP
       82 天前
    @LnTrx 隐私扩展怎么设置
    jousca
        24
    jousca  
       82 天前
    @mikeluckybiy IPV6 下,要学会用 DNS 解析主机名字,不然 IP 太长记不住。

    但是对你个人来说,DHCPv6 可能更简单。

    V6 的很多新东西和 V4 不一样,不要按惯性思维去考虑它。
    fastcache
        25
    fastcache  
       82 天前 via iPhone
    大家都以为 DHCPv6 更简单,实际上很难用,一般光猫的 SLAAC 做得最好,非常稳定
    fastcache
        26
    fastcache  
       82 天前 via iPhone
    @mikeluckybiy 随机地址主要是接受连接用,然而对于终端系统 win10/android/ios 没什么卵用......临时地址是隐私扩展,对外发起连接用,每天变。 winserver 属于服务器 OS ,默认是关闭随机地址(用 eui64)
    neroxps
        27
    neroxps  
       81 天前 via iPhone
    @isad 看看路由表,ipv6 的路由是用 FE80 地址的,是不是网络里面有两个发布 RA 公告的路由器?
    Xymmh
        28
    Xymmh  
       81 天前 via Android
    两个都开不就好了。想内网通讯方便就设置一个 fd00 开头的 ULA 。
    mikeluckybiy
        29
    mikeluckybiy  
    OP
       81 天前
    @jousca 我比较喜欢 DHCPv6 ,地址比较短,但有个问题,开了 DHCPv6 之后,系统会得到一个 ipv6 的 dns 地址,导致访问 google 时会使用这个 ipv6 dns (不过软路由)而不是原先的 ipv4 dns (过软路由),解析会出问题,有没有办法把系统自动的 ipv6 dns 地址改成和 ipv4 dns 一样,都使用软路由的地址?
    mikeluckybiy
        30
    mikeluckybiy  
    OP
       81 天前
    @fastcache 比较喜欢 DHCPv6 ,地址比较短,但有个问题,开了 DHCPv6 之后,系统会得到一个 ipv6 的 dns 地址,导致访问 google 时会使用这个 ipv6 dns (不过软路由)而不是原先的 ipv4 dns (过软路由),解析会出问题,有没有办法把系统自动的 ipv6 dns 地址改成和 ipv4 dns 一样,都使用软路由的地址?
    fastcache
        31
    fastcache  
       81 天前 via iPhone
    @mikeluckybiy 当然可以,DHCPv6 和 RA 都可以推送 IPv6 DNS 地址,我是手工设的,可以不用上游 DHCPv6-PD 的地址
    mikeluckybiy
        32
    mikeluckybiy  
    OP
       81 天前 via Android
    怎么设置成软路由的 dns ,软路由没有 ipv6
    77ShiORi
        33
    77ShiORi  
       81 天前
    @mikeluckybiy #32
    v6 的 DNS 可以试试设成 IPv4-Mapped Addresses ,也是把软路由的 v4 地址写成::ffff:x.x.x.x 形式的 v6 地址。
    LnTrx
        34
    LnTrx  
       81 天前
    @mikeluckybiy 一般主流操作系统默认就是开启的
    mikeluckybiy
        35
    mikeluckybiy  
    OP
       81 天前 via Android
    @77ShiORi 试过了,似乎不行,毕竟软路由的实际 ipv6 是动态的,怎么给软路由设置个 fe80 的静态 ipv6 ?
    RayLin
        36
    RayLin  
       80 天前 via Android
    可以使用 nat66 ,这样 wan 的 ip 更新了也无感,/64 用户也能使用。
    acbot
        37
    acbot  
       80 天前
    当然是 SLAAC ! 首先,不是所有设备都支持 DHCPv6 但都支持 SLAAC 。 另外,后缀不固定或者说长的问题,Linux 系统可以自定义后缀( Windows 没有研究过)
    rebecca554owen
        38
    rebecca554owen  
       80 天前 via Android
    地址信息用 slaac ,dns 用 dhcpv6 。
    mikeluckybiy
        39
    mikeluckybiy  
    OP
       80 天前 via Android
    @rebecca554owen 我现在想了个办法,都采用 dhcpv6 ,ipv6 的 dns 留空,似乎也可以
    rebecca554owen
        40
    rebecca554owen  
       79 天前 via Android
    ipv6 的 dns 可以用静态 dns ,dhcp 变更前缀太慢了。
    mikeluckybiy
        41
    mikeluckybiy  
    OP
       79 天前
    @rebecca554owen dhcp 多久变更一次前缀的?还没搞懂 ipv6 的原理,前缀不变更的话有什么问题么?
    rebecca554owen
        42
    rebecca554owen  
       78 天前 via Android
    @mikeluckybiy 路由器 dhcp 租期一般 12 小时,前缀变化了你就相当于断网重拨号了,IP 不一样了。v6 重拨次数很频繁。
    madizan
        43
    madizan  
       73 天前 via iPhone
    我现在在软路由上设置了一个 [email protected] 的虚拟接口获取了 ipv6 ,同时主路由用了 DHCPv6 给软路由分配 ipv6 ,并且将 DHCPv6 分配地址范围设置成了 1 个 ip ,也就是除软路由被静态分配之外,其他只有一个设备能获取 ipv6 地址。
    现在的问题是每次前缀发生变化,我都要在主路由里改软路由的静态地址前缀,并重启软路由的虚拟接口。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1485 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 17:33 · PVG 01:33 · LAX 10:33 · JFK 13:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.