htfcuddles

吃惊了,三大运营商的 IPv6 流量居然可以互相穿透?

  •  
  •   htfcuddles · Dec 23, 2024 · 7740 views
    This topic created in 688 days ago, the information mentioned may be changed or developed.

    最近折腾 IPv6 下的多 WAN ,照道理,因为源地址的选择由客户端判断,在不开启 NAT66 或者 NPT 情况下,多 WAN 肯定是不可行的,无论路由指定哪个接口,上游会丢弃不可达源地址(rp_filter)。 例如:

    • 客户端:2408:xx => 2409:xx
    • 路由器:按 PBR 转发到移动接口
    • 移动 BRAS:2408 是什么玩意?扔了扔了

    然而我发现未设置 NAT 情况下,PBR 居然走通了,联通移动互相转发了对方流量!

    客户端: ping 2400:3200::1 PING 2400:3200::1(2400:3200::1) 56 data bytes 64 bytes from 2400:3200::1: icmp_seq=1 ttl=119 time=6.29 ms

    tcpdump -i pppoe-wan1 host 2400:3200::1 11:53:12.218761 IP6 2409:xxx > public1.alidns.com: ICMP6, echo request, id 17810, seq 1, length 64

    tcpdump -i pppoe-wan3 host 2400:3200::1 11:53:34.598892 IP6 public1.alidns.com > 2409:xxx ICMP6, echo reply, id 17871, seq 1, length 64

    去程和回程走了不同的接口!试了几个 IP ,确实发现可以互相转发流量,对来源 IP 没有任何限制!

    21 replies  •  2025-07-18 07:28:17 +08:00
    povsister
    povsister
    Dec 23, 2024 via iPhone❤️4
    1
    啊这。应该是 bug 吧,否则黑产用这玩意玩个反射 ddos 伤害可太高了
    xie919
    xie919
    Dec 23, 2024
    2
    trace 图发一下呢,理论上不应该啊。
    basncy
    basncy
    Dec 23, 2024
    3
    聊胜于无。线路差的,丢包,高延时,墙中墙,一个也不会少。
    htfcuddles
    htfcuddles
    OP
    Dec 23, 2024
    4
    dream0689
    dream0689
    Dec 23, 2024 via iPhone
    5
    我开双 wan ipv6 用过一段时间,但是用着用着就不通了。最后关掉了其中一个 wan 口的 ipv6 才正常。我的路由器没法针对 ipv6 设置 nat66 和 npt 。
    htfcuddles
    htfcuddles
    OP
    Dec 23, 2024
    6
    @povsister 确实是 bug 。查了一下 ipv6 下 linux 内核居然没有 rp_filter 实现,06 年的 pr 一直没进主线。。 要过滤必须得开 nft 或 ipt 。 先把多 wan 关了,免得当 pcdn 噶我。。
    maybeonly
    maybeonly
    Dec 23, 2024
    7
    应该是 bug ,运营商侧没做源地址限制。
    之前偶然一次程序出现 bug ,到北京移动的路上没设置上 snpt ,用了联通的 ip ,结果能正常通信……
    slowman
    slowman
    Dec 23, 2024
    8
    偷着乐不好吗
    LGA1150
    LGA1150
    Dec 23, 2024
    9
    OpenWRT 双 WAN 默认会根据源地址选择哪个 WAN 口出去,不需要配置
    htfcuddles
    htfcuddles
    OP
    Dec 23, 2024
    10
    @LGA1150 前提是客户端需要选择正确的源地址。然而家里那么多设备如何保证选择的是最优线路呢,逐个设备编辑 gai.conf 吗?那不能 root 的设备怎么办?最终合理方案还是要集中式控制。
    lo0pback
    lo0pback
    Dec 23, 2024
    11
    漏网之鱼吧,我这边三线不做 pbr 根本用不了
    JoeSmith
    JoeSmith
    Dec 23, 2024
    12
    貌似就算能通信也没得到什么好处
    xiuming
    xiuming
    Dec 23, 2024
    13
    这不应该是互联网正常功能吗
    caola
    caola
    Dec 23, 2024
    14
    有的地方验证来源,有的不验证吧。否则 黑产 最喜欢了。其实这样我也喜欢,因为可以跨国跨地区做 CDN 服务了
    xqzr
    xqzr
    Dec 23, 2024
    15
    tcpdump -ni any host 2400:3200::1
    syswow64
    syswow64
    Dec 23, 2024
    16
    中国联通骨干网没做 rp_filter 似乎是个旧闻了。
    印象中国不是强制上级路由器做 rp_filter 吗?
    syswow64
    syswow64
    Dec 23, 2024
    17
    艹。研究了一下,复现了。

    分享一较简单的方法:
    1. 在接口添加要冒充的 IPv6 地址。
    ```sh
    sudo ip -6 address add <spoofed_ipv6_address>/128 dev eth0
    ```
    2. 以之为源地址发包。
    ```sh
    ping -I <spoofed_ipv6_address> -i 2 -c 5 2400:3200::1
    ```

    此缺陷绝对会被利用,如反射 DDoS 。
    但愿早日修复吧~
    syswow64
    syswow64
    Dec 23, 2024
    18
    补充:
    1. <spoofed_ipv6_address> 可以自由发挥,比如 VPS 地址。
    2. 在某厂商 VPS 上复现失败。说明此缺陷可被 rp_filter 或类似机制解决,只是中国运营商没做。
    justtoxic
    justtoxic
    Dec 23, 2024 via iPhone
    19
    没用,ping 的通但是速度很慢,跑一跑 tailscale 点对点连接就被限速了。跨运营商流量管控可是和彼此的分润挂钩的,不做来源限制不等于能用,只能说是能通,但是限的很死
    htfcuddles
    htfcuddles
    OP
    Dec 24, 2024
    20
    @syswow64 #18 查了一下 IPv6 uRPF 有两个模式,对用户一般是 strict ,对 ISP 是 loose 。很可能是没配或者配错。。dc 肯定会做,不然你一个 IP 两个 ISP 出口,等于白嫖 BGP (虽然只有半程)。
    HawkinsSherpherd
    HawkinsSherpherd
    Jul 18, 2025
    21
    @syswow64 骨干网非对称路由挺常见的,uRPF 不好开
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4090 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 70ms · UTC 05:51 · PVG 13:51 · LAX 21:51 · JFK 00:51
    ♥ Do have faith in what you're doing.