跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 深圳联通宽带 IPv6 是只给一段 /64 吗?
未分類
2020 年 11 月 9 日

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

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

資深大佬 : rio 0

我现在的情况是:

  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 ?

大佬有話說 (72)

  • 主 資深大佬 : rio

    补充:用这位老哥的[土办法]( https://forum.dd-wrt.com/phpBB2/viewtopic.php?p=1101319&sid=407bf03903486e59b4a2dd884386db42) 强制将 `ppp0` 上的那段 /64 分配给内网,但是因为每次拨号都会变,所以是不是还需要一个办法自动化这个过程?

  • 資深大佬 : Livid

    感觉给内网设备分配 IPv6 地址这件事情应该是内网里自己的 DHCPv6 服务器做的事情。

  • 資深大佬 : Livid

    https://en.wikipedia.org/wiki/Prefix_delegation

  • 資深大佬 : Livid

    ISP 给了你 /64,然后你可以自己继续自由分配这个 /64 里面的 /128

  • 資深大佬 : Livid

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

  • 主 資深大佬 : rio

    @Livid 现在的问题是我不知道 Linux 上这个 PD 怎么配置,你的例子和网上的教程大部分都是使用 Unifi 或者 OpenWRT 这样的专用系统,对标准 Linux 系统没有指导意义

  • 資深大佬 : Livid

    @rio 我也没有这么配过,仅供参考吧:

    https://superuser.com/questions/58626/dhcpv6-server-client-on-linux

  • 資深大佬 : zro

    顺手装个 ADGuardHome 分配 v6 试试吧~ 深圳联通宽带 IPv6 是只给一段 /64 吗?

  • 主 資深大佬 : rio

    @Livid 如果我手动把 ppp0 上的那段 /64 配置到 lan 网卡上,通过 dnsmasq 也可以分配 IPv6 地址给内网设备并且上网(就是这里 https://forum.dd-wrt.com/phpBB2/viewtopic.php?sid=407bf03903486e59b4a2dd884386db42&p=1101319 提供的土办法)。

    现在我不太确定的地方是 ppp0 获取到的这段 /64 是否应该分配给内网?如果是的话,用什么软件包自动实现这个过程呢?

    因为我看别人的教程好像是 ISP 给路由器一个 /64,但是路由器通过 DHCPv6 再请求一个新的 /64 再分配给内网设备(比如这个 http://www.routereflector.com/2016/10/enabling-ipv6-via-pppoe-on-a-telecom-italia-tim-link/ )。

  • 資深大佬 : XiaoxiaoPu

    wiki.archlinux.org/index.php/IPv6#Prefix_delegation_(DHCPv6-PD)

  • 資深大佬 : XiaoxiaoPu

    你看的教程,其实就是自动获取 ISP 给你分配的前缀,并且把这个前缀通告到 lan 里。

    「现在我不太确定的地方是 ppp0 获取到的这段 /64 是否应该分配给内网?如果是的话,用什么软件包自动实现这个过程呢?」教程里的 WIDE-DHCPv6 就是自动实现这个过程的软件。

  • 資深大佬 : Xymmh

    @rio 只给 /64 不是不行,是可以正常分配给内网的,不用纠结这个。这是一种 ISP 很常规的 IPV6 分配方法(比如大部分教育网)。

    分配方法可以是中继或者透传
    你说的直接分配给内网应该相当于中继?应该是没有问题的。

  • 資深大佬 : Xymmh

    @rio odhcpd 可以实现你说的过程

  • 主 資深大佬 : rio

    @XiaoxiaoPu 按照你给的这个链接我也试过,wide-dhcpv6-client 会通过 ppp0 向局端发起请求,然后局端回复 NoPrefixAvailable,所以就回到最开始的问题了,如果局端只给分配一个 /64,并且这个 /64 被 pppd 分给了 ppp0 网卡,然后我该怎么自动把这个 /64 也分给内网设备呢?

  • 資深大佬 : XiaoxiaoPu

    @rio 改一下你的 ppp 配置的 dhcp 客户端,使用 wide-dhcpv6

  • 資深大佬 : v2tudnew

    运营商要是给个 60%前缀就好办了,你也应该试试光猫拨号能不能弄到 /60%,也许是系统问题

  • 資深大佬 : LnTrx

    要确认运营商是否只给一段 /64,推荐的做法是临时改成光猫拨号,查看 IPv6 连接信息,以排除拨号配置层面的问题

  • 資深大佬 : XiaoxiaoPu

    ppp 有点忘了,上面一条可能不太对,如果不能修改配置的话,可以试试用 hook script 自动生成 radvd.conf

  • 主 資深大佬 : rio

    @XiaoxiaoPu 想过用 ipv6-up script,但是实测发现 script 获取到的的 IPv6 地址是 fe80::/10 的 link-local 。RA 得到的 /64 不知道是什么东西给配置到 ppp0 网卡上去的

  • 主 資深大佬 : rio

    @LnTrx 光猫试过,看后台也是得到的 /64,所以我在怀疑是不是就是只给这么一段 /64 剩下的自己想办法……

  • 資深大佬 : XiaoxiaoPu

    @rio
    你的 wide-dhcpv6 配置文件是按你找到的那个教程弄的吗?试试把 rapid-commit 去掉?

    获取的是 link-local 地址,可能是因为脚本被拉起的比较早,这时候公网 IPv6 地址还没加上,可以考虑加个后台循环等待检测的逻辑

  • 資深大佬 : bubuyu

    济南联通是 /60

  • 主 資深大佬 : rio

    @XiaoxiaoPu 诶改了下配置,再用 wide-dhcpv6-client 似乎可以获取单独再获取一段 /64 了…… 要点似乎是要把 sla-len 8 改成 sla-len 0 才行

  • 資深大佬 : XiaoxiaoPu

    @rio 看了下文档,sla-id 跟获取的前缀组合在一起,会作为往 interface 通告的前缀 (sla-len 是 sla-id 的 bit 长度)。你获取的前缀就是 /64 的,所以 sla-len 需要设为 0 。

  • 資深大佬 : XiaoxiaoPu

    如果你的运营商给你 /48,那么是可以把 sla-len 设为 8 的。

  • 主 資深大佬 : rio

    @XiaoxiaoPu 嗯,而且 sla-len 不写的话默认值是 16 很迷……

    现在更加奇怪的是我在 ppp0 上抓包看不到任何 wide-dhcpv6-client 发起的 dhcpv6 pd 的请求,不知道它从哪里变出来一块 /64 来放到了 lan 网卡上

  • 資深大佬 : zwy100e72

    之前在推特上我一直认为可以用 DHCP-PD + SLAAC 的方式配置 … 那现在看到 NoPrefixAvailable 感觉是不太行了

    要么就是请求的 prefix 太大超过了限制,这种情况的话考虑调小一点 sla-len 可能有用 [2][2]

    还有一种方式,就是我说的转发 RA + NA + NS,也就是[这里][1] 提到的 relay 模式

    [1]: https://openwrt.org/docs/guide-user/network/ipv6/start “Router Advertisement & DHCPv6”
    [2]: https://openwrt.org/docs/guide-user/network/ipv6/dhcp6c “Interface Settings”

  • 資深大佬 : zwy100e72

    默认配置 sla-len = 16 是因为,ipv6 network id 长度是 48 bit [1]. 建议尝试下 sla-len = 4,看看能不能分到 /60 的 prefix

    [1]: https://ipcisco.com/lesson/subnetting-in-ipv6/

  • 主 資深大佬 : rio

    @zwy100e72 sla-len=4 试过了不行,分配不到。现在完全抓不到 dhcpv6 相关的包了,太奇怪了……

  • 資深大佬 : matrix67

    @rio 说到光猫,主吟诗的光猫原因找到没有,hackernews 上说是 huawei 的一个专利,专门查有没有环路的。感觉还是国内论坛上可能有华为的工程师知道原委,哈哈。

    感觉这样的行为是工程师最极致的浪漫,不亚于 linus 把他 3 个女儿[1]生日硬编码到内核中啊。

    [1] 程序员生女儿这个梗在他身上比较明显。

  • 資深大佬 : cwbsw

    大家基础知识掌握得不行啊,RA 宣告的前缀正常情况下是不能继续往下游分割的,非要用这个前缀的话需要 NDP Proxy 转发 ND 报文,类似于 ARP Proxy 。

  • 主 資深大佬 : rio

    @cwbsw /64 一定要分割么?可不可以不分割直接分给内网设备?

  • 主 資深大佬 : rio

    @matrix67 上海贝尔的听众朋友去问去了,还没反馈

  • 資深大佬 : zwy100e72

    @rio 你拿到的 /64 应该是一个地址而不是一个前缀,前缀可以继续分下去,地址不行。地址只是 /64 网段中的一个地址,这时候如果想要别的地址,那就得通过 NDP Proxy 来转发 ND 报文才行。

  • 資深大佬 : XiaoxiaoPu

    @cwbsw 主的设备就是软路由,IPv6 网络是 PPP 拨号来的,不是 RA 来的

  • 資深大佬 : dndx

    既然都有了 /64,直接给内网设备 SLAAC 就可以,这样最简单。如果 ISP 给的段比 /64 再小才需要用 DHCPv6 来分配 /128 。

    ROS 上这个很好配置。我写过一个文章就是把 ISP PD 给用户的 /64 用 Router Advertisements (RA) 在内网上广播,内网上的机器就会自动根据 prefix 分配地址。Linux 上看了一下应该可以用 radvd 来生成 RA 广播。

    ROS 可以参考: https://idndx.com/routeros-meets-comcast-ipv6/

  • 資深大佬 : dndx

    不管你的 /64 是怎么来的,只要 ISP 把整个 /64 都路由到了你这一端,直接跑 radvd 给内网宣告就行。如果 ISP 变态只路由了一个单独的地址到你这那就无解了。(最起码我们这边的电信不是这样的,因为不符合 RFC 和最佳实践)

  • 資深大佬 : cwbsw

    @rio 可以不分割啊,但问题是你没前缀啊。

    @XiaoxiaoPu 一样的。

  • 資深大佬 : mrtqiangqiang

    问下 深圳 联通 ipv4 是公网吗

  • 資深大佬 : zro

    @dndx #36 想核实一下,DHCPv6 w/Prefix Delegation 里的 w/是 with 的缩写吗? Thank you.

  • 主 資深大佬 : rio

    @cwbsw 请问你说的「没前缀」具体是指什么?我现在通过 DHCPv6 PD 能拿到两个 /64 了,加上 ppp0 上自带的那个 /64,一共是三个。再请求一个 /64 被局端回复 NoPrefixAvailable 。

  • 主 資深大佬 : rio

    @mrtqiangqiang 默认不是,我刚装的时候申请了换成公网。

  • 資深大佬 : dndx

    @zro 是的,不过貌似除了 DHCP-PD,国内也可能是通过 PPPoE 拿到的 prefix 。重点是把拿到的 prefix 用 RA 广播到局域网上。至于路由 ISP 那边应该是已经把整个 /64 都路由到你这了所以不用担心。

  • 資深大佬 : dndx

    好吧,看了一下文档,通过 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

    @dndx 我现在想怎么让 pppd 不自动配置那个 /64 的 prefix 到 ppp0 网卡上去,因为放这里没啥用,我想把它直接分给另外一个 vlan 。

  • 資深大佬 : zro

    @dndx #43 国内确实像你说的,同时在用 OpenWRT 和 ROS,OP 还能拿多一个 IP,相比之下 OpenWRT 要好用些,理由是 ROS 的 RA 广播时间有点长,有些设备从来不关的话,会查到一堆 v6,不能直接看出当前 IP 是哪一个,哪些 IP 是过期的~

  • 資深大佬 : domosekai

    PD 的前缀是通过 DHCPv6 申请并下发的,不申请就没有。
    你说的 ppp0 上的通过 RA 下发的地址是自动的,收到 RA 后绑定地址是内核行为,受 accept_ra 参数控制,和 pppd 无关

  • 資深大佬 : zro

    @rio #45 这个很久之前在哪个 v6 论坛有说过,利用 iptable 把 PPPoE v6 的数据包 drop 掉,然后另一个接口跟它桥接,就能拿过来用了,但现在想不起关键字了,或者是论坛不在,找不到了~唉,其实我也想用这种方法的。。。

  • 資深大佬 : domosekai

    另外,这两个地址是不同的东西,PD 的前缀是给你整个 /64 子网,上一级的路由表直接指向你,而 RA 只是告诉你 WAN 口所在子网的前缀,你的网关只是其中一员,可以分配若干个地址自己使用但不拥有整个 /64 子网,上级路由不指向你

  • 資深大佬 : ericFork

    如果确定 PD 拿到的只有 /64,那么 ndppd 是你唯一的最优解

  • 資深大佬 : domosekai

    @ericFork ndppd 是没有 pd 的情况下用的,只要有 PD 哪怕 64 也能分给一个子网

  • 資深大佬 : wazon

    @zro 你说的会不会是这篇 https://koolshare.cn/thread-46415-1-1.html

  • 資深大佬 : zro

    @wazon #52 如果你指的是方案 3 的话,有点像但又不太像,ebtables 处理不了 PPPoE 的数据的,这个适合上游已经有 v6 了,倒是挺适合用在第二步,第一步当然是 iptable 来处理 PPPoE 的包~

  • 主 資深大佬 : rio

    @domosekai 非常感谢解惑!我现在终于明白了 RA 和 PD 的区别!所以不应该直接去打 ppp0 上 RA 得到的 /64 的主意,因为这个 /64 并没有分给我,虽然不知道同一个 /64 还有谁……另外就是如果 ISP 只给我 RA 一个 /128 其实也可以?

  • 資深大佬 : mrtqiangqiang

    @rio 直接 10010 ?

  • 資深大佬 : domosekai

    @rio RA 下发的肯定是 /64,其他的无法进行 SLAAC,只能用 DHCPv6 获取。你的理解没错,你不知道同一个 /64 还有谁,所以最好不要用。但是在没有 PD 的环境下也可以打这个 /64 的主意,这时你的网关就要帮内网设备代理应答上一级的 NS,相当于 IPv4 的 ARP 代理,这个工具就是上面说到的 ndppd 。顺便说一句,安卓手机在 IPv6 下开热点时,就是用这个方法共享本机的前缀,移网是没有 PD 的。

  • 主 資深大佬 : rio

    @domosekai 多谢解释!我想起来了,SLAAC 要求最小前缀就是 /64 。如此说来,有些教育网只给 /128 的话就是通过 DHCPv6 分配的了,这种情况下连代理 NDP 都不行呢,只能做 NAT6,对吧?

    另外我看到的信息是安卓不支持 DHCPv6,也就是说如果不能 RA /64 然后 SLAAC 的话就直接无法使用 IPv6 了,想想也是醉了……

  • 主 資深大佬 : rio

    @mrtqiangqiang 好些年头了,不太记得当时怎么搞的了……

  • 資深大佬 : flynaj

    就目前而言你还是用 openwrt 最简单方便,/64 这个是默认必须分配的。你要请求 pd
    深圳联通宽带 IPv6 是只给一段 /64 吗?

  • 資深大佬 : domosekai

    @rio 对,安卓的问题是谷歌坚持 IPv6 不能走 v4 的老路,既然地址数量充足就不需要再逐一分配,而是让设备自主决定地址,方便物联网也省电也保护隐私,有他的道理但是也有实际的困难,尤其是企业、学校这种 managed network

  • 資深大佬 : tia

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

    ohdcpd 解君愁

  • 資深大佬 : tia

    @rio #9 odhcpd 或者 odhcpd ipv6 only

  • 資深大佬 : tia

    @rio #1 那是因为旧版本的 odhcpd 有 bug,分不了非 pd 的 /64,后来更新的 odhcpd 已经修复了

  • 資深大佬 : tia

    现在根本不需要 dhcpv6 了,直接 openwrt 的 odhcpd+ra+ndp 一条龙

  • 資深大佬 : dreamage

    看了帖子赶紧把外网 IPv6 打开试试,拿到个 /60

  • 資深大佬 : qbqbqbqb

    @rio 简单地说,此 /64 非彼 /64 。通过 Router Advertisement 得到的是“单个地址”,而非“前缀”,PD 得到的才是前缀。RA 里的”/64″其实就是相当于 ipv4 里子网掩码的含义。

  • 主 資深大佬 : rio

    @qbqbqbqb 嗯,现在理解这个意思了。比较容易迷糊的点在于 RA 的 /64 虽然我不拥有整个 /64 段,但是因为地址空间够大,多生成一些用其实也是可行的,比如开了 privacy extension 后生成的多个随机地址。

  • 主 資深大佬 : rio

    @tia 能 PD 还是尽量 PD 吧,NDP 毕竟是个 hack…

  • 主 資深大佬 : rio

    @dreamage 哪里的运营商这么好?

  • 主 資深大佬 : rio

    @domosekai 我其实在想……RA 给我的那个 /64,应该没有别人了吧?我刚看了个运营商部署 IPv6 的最佳实践,似乎 RA 给 CPE 单独的 /64 是个推荐做法? https://www.ripe.net/publications/docs/ripe-690

  • 資深大佬 : yov123456

    我这电信给的是 /56…

  • 資深大佬 : domosekai

    @rio 不是,此文的意思是给 WAN 口的前缀要使用一个单独的 pool,和 PD 下发的前缀分开,不是说这个 pool 里只有你。另外,有多少人其实不重要,重要的是上级路由表的下一跳不是你。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具