深圳联通宽带 IPv6 是只给一段 /64 吗?

2020-11-06 15:01:21 +08:00
 rio

我现在的情况是:

  1. 用软路由( debian 10 )装 pppd 进行 PPPoE 拨号;
  2. 拨号成功后建立 ppp0 网卡,pppd 和局端协商到一个 IPv4 地址和一个 fe80::/10 的 IPv6 link-local 地址;
  3. 局端通过这个 fe80::/10 地址每十分钟给我个 Router Advertisement,里面包含一段 2408:8256:3075:BEEF::/64 ( BEEF 那段每次拨号会变)。

现在的问题是局端 RA 给我的 2408:8256:3075:BEEF::/64 这段地址只在 ppp0 网卡上存在(我猜是 pppd 给自动配上的?),此时我应该怎么办?直接分配这个 /64 给内网设备?如果是,用啥工具实现?

尝试过用 wide-dhcpv6-client 通过 ppp0 向局端再请求一个 /64,但是抓包显示局端回复 NoPrefixAvailable,是不是说局端就只给之前那个 /64 ?

10121 次点击
所在节点    宽带症候群
76 条回复
rio
2020-11-06 23:52:55 +08:00
@cwbsw 请问你说的「没前缀」具体是指什么?我现在通过 DHCPv6 PD 能拿到两个 /64 了,加上 ppp0 上自带的那个 /64,一共是三个。再请求一个 /64 被局端回复 NoPrefixAvailable 。
rio
2020-11-06 23:53:35 +08:00
@mrtqiangqiang 默认不是,我刚装的时候申请了换成公网。
dndx
2020-11-07 01:17:40 +08:00
@zro 是的,不过貌似除了 DHCP-PD,国内也可能是通过 PPPoE 拿到的 prefix 。重点是把拿到的 prefix 用 RA 广播到局域网上。至于路由 ISP 那边应该是已经把整个 /64 都路由到你这了所以不用担心。
dndx
2020-11-07 01:25:07 +08:00
好吧,看了一下文档,通过 PPPoE 拿到的 prefix 其实也是先 PPPoE 建立了后再 DHCPv6-PD,所以楼主的情况猜测是 pppd 或者什么别的 daemon 在接口上自动请求了一个 prefix 。

参考: https://www.juniper.net/documentation/en_US/release-independent/nce/topics/concept/subscriber-management-dual-stack-dhcpv6-pd-over-pppoe-nce.html
rio
2020-11-07 01:37:02 +08:00
@dndx 我现在想怎么让 pppd 不自动配置那个 /64 的 prefix 到 ppp0 网卡上去,因为放这里没啥用,我想把它直接分给另外一个 vlan 。
zro
2020-11-07 01:38:14 +08:00
@dndx #43 国内确实像你说的,同时在用 OpenWRT 和 ROS,OP 还能拿多一个 IP,相比之下 OpenWRT 要好用些,理由是 ROS 的 RA 广播时间有点长,有些设备从来不关的话,会查到一堆 v6,不能直接看出当前 IP 是哪一个,哪些 IP 是过期的~
domosekai
2020-11-07 01:41:15 +08:00
PD 的前缀是通过 DHCPv6 申请并下发的,不申请就没有。
你说的 ppp0 上的通过 RA 下发的地址是自动的,收到 RA 后绑定地址是内核行为,受 accept_ra 参数控制,和 pppd 无关
zro
2020-11-07 01:43:15 +08:00
@rio #45 这个很久之前在哪个 v6 论坛有说过,利用 iptable 把 PPPoE v6 的数据包 drop 掉,然后另一个接口跟它桥接,就能拿过来用了,但现在想不起关键字了,或者是论坛不在,找不到了~唉,其实我也想用这种方法的。。。
domosekai
2020-11-07 01:45:20 +08:00
另外,这两个地址是不同的东西,PD 的前缀是给你整个 /64 子网,上一级的路由表直接指向你,而 RA 只是告诉你 WAN 口所在子网的前缀,你的网关只是其中一员,可以分配若干个地址自己使用但不拥有整个 /64 子网,上级路由不指向你
ericFork
2020-11-07 01:46:09 +08:00
如果确定 PD 拿到的只有 /64,那么 ndppd 是你唯一的最优解
domosekai
2020-11-07 01:49:48 +08:00
@ericFork ndppd 是没有 pd 的情况下用的,只要有 PD 哪怕 64 也能分给一个子网
wazon
2020-11-07 02:00:25 +08:00
@zro 你说的会不会是这篇 https://koolshare.cn/thread-46415-1-1.html
zro
2020-11-07 02:07:15 +08:00
@wazon #52 如果你指的是方案 3 的话,有点像但又不太像,ebtables 处理不了 PPPoE 的数据的,这个适合上游已经有 v6 了,倒是挺适合用在第二步,第一步当然是 iptable 来处理 PPPoE 的包~
rio
2020-11-07 03:12:12 +08:00
@domosekai 非常感谢解惑!我现在终于明白了 RA 和 PD 的区别!所以不应该直接去打 ppp0 上 RA 得到的 /64 的主意,因为这个 /64 并没有分给我,虽然不知道同一个 /64 还有谁……另外就是如果 ISP 只给我 RA 一个 /128 其实也可以?
mrtqiangqiang
2020-11-07 10:38:12 +08:00
@rio 直接 10010 ?
domosekai
2020-11-07 15:07:02 +08:00
@rio RA 下发的肯定是 /64,其他的无法进行 SLAAC,只能用 DHCPv6 获取。你的理解没错,你不知道同一个 /64 还有谁,所以最好不要用。但是在没有 PD 的环境下也可以打这个 /64 的主意,这时你的网关就要帮内网设备代理应答上一级的 NS,相当于 IPv4 的 ARP 代理,这个工具就是上面说到的 ndppd 。顺便说一句,安卓手机在 IPv6 下开热点时,就是用这个方法共享本机的前缀,移网是没有 PD 的。
rio
2020-11-07 16:03:20 +08:00
@domosekai 多谢解释!我想起来了,SLAAC 要求最小前缀就是 /64 。如此说来,有些教育网只给 /128 的话就是通过 DHCPv6 分配的了,这种情况下连代理 NDP 都不行呢,只能做 NAT6,对吧?

另外我看到的信息是安卓不支持 DHCPv6,也就是说如果不能 RA /64 然后 SLAAC 的话就直接无法使用 IPv6 了,想想也是醉了……
rio
2020-11-07 16:04:17 +08:00
@mrtqiangqiang 好些年头了,不太记得当时怎么搞的了……
flynaj
2020-11-07 16:29:27 +08:00
就目前而言你还是用 openwrt 最简单方便,/64 这个是默认必须分配的。你要请求 pd
domosekai
2020-11-07 17:10:23 +08:00
@rio 对,安卓的问题是谷歌坚持 IPv6 不能走 v4 的老路,既然地址数量充足就不需要再逐一分配,而是让设备自主决定地址,方便物联网也省电也保护隐私,有他的道理但是也有实际的困难,尤其是企业、学校这种 managed network

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/722411

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX