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

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

  •  
  •   mikeluckybiy · 2022-05-19 12:03:34 +08:00 · 6618 次点击
    这是一个创建于 924 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    neroxps
        1
    neroxps  
       2022-05-19 12:56:10 +08:00
    https://www.nullzero.co.uk/android-does-not-support-dhcpv6-and-google-wont-fix-that/
    google 好像不打算支持 DHCPv6
    家用宽带里,即使是有状态,PD 前缀还是会变的所以依然是需要依赖 DNS 来访问设备,而且家用纯二层互访应该使用 FE80 地址方便些,所以无状态已经足够,没必要用有状态了,我是这样的环境。
    cwbsw
        2
    cwbsw  
       2022-05-19 13:21:31 +08:00
    SLAAC 。当上游前缀改变时,符合规范的路由器会同时广播失效前缀和新的前缀,下游设备可以无缝切换。而用 DHCPv6 的话,就算租期设定的很小,断网时间始终还是存在的。
    mikeluckybiy
        3
    mikeluckybiy  
    OP
       2022-05-19 13:30:04 +08:00 via Android
    @cwbsw 怎么看租期是多少,我这边显示租期有一百多年。。。另外为什么无状态的地址太长了,有状态的地址看着舒服
    mikeluckybiy
        4
    mikeluckybiy  
    OP
       2022-05-19 13:33:40 +08:00 via Android
    @neroxps 无状态的租期是多久怎么看,能设置租期么?另外,无状态的为什么地址比有状态的长很多?
    neroxps
        5
    neroxps  
       2022-05-19 13:55:56 +08:00 via iPhone
    @mikeluckybiy 分配算法有关,没开隐私地址的话是按照 mac 分配的。
    无状态是 preferred time 和 valid lifetime ,靠路由 ra 组播下发 pd 前缀而已,里 ra 里面带了这两个参数的时间。
    如果过期时间太长,会导致旧的地址没释放,地址超过 15 个,获取不到新的地址。
    我之前 ros 默认配置这个时间太长了出现这种问题。
    ifconfig 可以看到这两个时间
    neroxps
        6
    neroxps  
       2022-05-19 14:11:57 +08:00 via iPhone
    @cwbsw 就是奇怪我之前 ros 没有公告 RA 取消前缀。不知道是不是哪里没配置,后来我改了时间
    neroxps
        7
    neroxps  
       2022-05-19 14:28:17 +08:00 via iPhone
    翻了下文档,好像 RA 公告 Pd 前缀失效是 RFC7084 协定,Mikrotik 好像没支持。
    https://forum.mikrotik.com/viewtopic.php?t=131282
    所以还是靠生存时间来确定。
    RA 公告间隔< preferred time ?
    mikeluckybiy
        8
    mikeluckybiy  
    OP
       2022-05-19 15:56:08 +08:00
    @neroxps 我还是没搞懂这个租期问题,ifconfig 没有看到时间,dhcpv6 方式获取的地址和 mac 没有关系,我这个 ipv6 的租期时间应该是设置了最大值,有 100 多年才会过期,不知道会不会 ip 被强制下线更新
    neroxps
        9
    neroxps  
       2022-05-19 16:14:27 +08:00
    @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
       2022-05-19 17:16:14 +08:00
    @neroxps 懂了,无状态时我这边看到租期是 72 小时也就是 3 天,有状态时也就是目前使用的,ip addr 显示 valid_lft forever preferred_lft forever ,感觉真是永久性的定义,并且系统识别为固定地址
    neroxps
        11
    neroxps  
       2022-05-19 17:23:53 +08:00
    @mikeluckybiy #10 问题是公网那边的 PD 前缀会变的,变了前缀就变。无状态如果租期是 3 天,48 小时重拨一次,可能会出现两个 ipv6 地址,不过也没问题。我之前 ros 给我配成 30 天才出问题。
    cloudsigma2022
        12
    cloudsigma2022  
       2022-05-19 18:27:34 +08:00
    openwrt 谁成功用 dhcp v6 获取到 v6 ,请告诉我怎么设置
    mikeluckybiy
        13
    mikeluckybiy  
    OP
       2022-05-19 19:03:44 +08:00 via Android
    @neroxps 又有个新的问题,似乎开启 dhcpv6 后安卓电视没办法访问 google 了,安卓手机和电脑都正常,已经关了 ipv6 解析,安卓电视也没有 ipv6 地址,不知道什么问题
    LnTrx
        14
    LnTrx  
       2022-05-19 19:15:35 +08:00
    SLAAC + 隐私扩展 可以防止 IP 被外部暴力扫描
    huaes
        15
    huaes  
       2022-05-19 19:28:06 +08:00
    @cloudsigma2022 网上教程都可以,就是有的地区离谱到只给 /64 ,所以没法 DHCP V6
    huaes
        16
    huaes  
       2022-05-19 19:29:29 +08:00
    DHCP V6 会自带设备名后缀,SLAAC 完全随机会更安全一点而已。
    mikeluckybiy
        17
    mikeluckybiy  
    OP
       2022-05-19 19:37:53 +08:00
    @huaes 但是使用无状态 SLAAC 之后 windows 有 2 个 2 开头的 ipv6 地址,一个是 ipv6 地址,一个是 ipv6 临时地址,这两个有什么区别?正常上网时使用的是哪个?
    huaes
        18
    huaes  
       2022-05-19 19:45:20 +08:00
    @mikeluckybiy IPv6 是给你系统的,那些临时 IPv6 是给软件用的,而且临时 IPv6 不止一个,看软件申请了多少
    neroxps
        19
    neroxps  
       2022-05-19 20:13:29 +08:00 via iPhone
    @mikeluckybiy 让 dns 不反会匹配规则的 AAAA 记录
    isad
        20
    isad  
       2022-05-19 20:32:27 +08:00
    我的电脑 Win10 21H1 连移动发的中移杭州光猫 GS2107 ,无论是 DHCPv6 还是 SLAAC 甚至关掉临时地址,都会用几个小时就断网,这时候租期没到,网关都不可及,别的 ios 或者安卓设备就没有这个问题~~
    Atomo
        21
    Atomo  
       2022-05-19 20:58:48 +08:00
    请无脑选择,无状态(SLAAC),历史的潮流谁也无法阻挡
    mikeluckybiy
        22
    mikeluckybiy  
    OP
       2022-05-19 21:06:23 +08:00
    @huaes 怎么看 DHCP V6 带的设备名后缀是哪个?好像 mac 地址不是 dhcpv6 的地址
    mikeluckybiy
        23
    mikeluckybiy  
    OP
       2022-05-19 21:07:24 +08:00
    @LnTrx 隐私扩展怎么设置
    jousca
        24
    jousca  
       2022-05-19 21:51:38 +08:00
    @mikeluckybiy IPV6 下,要学会用 DNS 解析主机名字,不然 IP 太长记不住。

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

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