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

[未测试] 绕过上海电信白名单限速

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

    自用了很久的玩具项目 https://github.com/LGA1150/nf_deaf

    原理:TCP 三次握手后在真实的请求之前发送一个在白名单之内的伪造请求,理论上不需要有服务器转发。
    使用 skb fwmark 控制,兼容 iptables/nftables 。
    伪造请求内容可自定义。

    47 条回复    2025-05-22 15:01:31 +08:00
    wyntalgeer
        1
    wyntalgeer  
       59 天前
    旁路部署?
    sadan9
        2
    sadan9  
       59 天前
    关键添加的数据如何不影响正常的通信。
    wy315700
        3
    wy315700  
       59 天前
    @sadan9
    TTL 短一点就行了,




    看了眼代码,发现自己看不懂
    des
        4
    des  
       59 天前
    这个咋用啊
    Lentin
        5
    Lentin  
       58 天前
    等个使用说明书~。~
    Chihaya0824
        6
    Chihaya0824  
       58 天前
    野生的 kmod 出现了,这个性能怎么样啊,可以无脑给所有流量 setmark 吗?
    lambdaq
        7
    lambdaq  
       58 天前
    好家伙。0 注释!
    bosonx
        8
    bosonx  
       58 天前 via Android
    等一个教程
    VwEI
        9
    VwEI  
       58 天前
    等一个教程
    aa51513
        10
    aa51513  
       58 天前
    你也太高看我了,一行注释都没有,怕是一时半会儿看不懂
    skylancer
        11
    skylancer  
       57 天前
    这个方式有人用来过墙的,我也没想过能绕过限速...
    skylancer
        12
    skylancer  
       57 天前
    这个方式有人用来过墙的,我也没想过居然能绕过限速...
    hondaya
        13
    hondaya  
       57 天前
    同求教程,我这非 443 端口上传流量大点就限制上传速率到 0.5 Mbps ,节点,frp 都没法用。自建节点和 frp 域名改成 speedtest 开头的就不限速了。
    thinsychen
        14
    thinsychen  
       57 天前
    无需旁路部署,在有权限的路由上可以部署,
    实测 内核 5.15 sh telecom 可以破解 TCP 限速 5M ,基本达到满速!感谢楼主提供的思路。
    thinsychen
        15
    thinsychen  
       57 天前
    或者 客户端部署也可以。
    huaxie1988
        16
    huaxie1988  
       57 天前
    怎么使用呢
    leeyijie
        17
    leeyijie  
       56 天前
    收藏一下
    bhkkvip
        18
    bhkkvip  
       56 天前
    用 deepseek 翻译了一遍,又问了下怎么用,大概好像知道了...
    TonyBoney
        19
    TonyBoney  
       56 天前
    在 Linux 路由器成功使用,编译并加载模块后,通过匹配数据包大小的方式跳过握手包,把教程分享给大家,不用谢:
    1. git clone 楼主的仓库,不用多说。
    2. 可以修改源码里的 payload 为你喜欢的内容,也可以在加载模块后修改/sys/kernel/debug/nf_deaf/buf 的内容,例如:
    #define NF_DEAF_BUF_DEFAULT "GET / HTTP/1.1\r\n\
    Host: www.speedtest.cn\r\n\
    User-Agent: Mozilla/5.0\r\n\
    Accept: */*\r\n\
    Connection: close\r\n\
    \r\n"
    3. 改一下 MakeFile:
    obj-m += nf_deaf.o
    KDIR := /lib/modules/$(shell uname -r)/build

    all:
    $(MAKE) -C $(KDIR) M=$(PWD) modules

    clean:
    $(MAKE) -C $(KDIR) M=$(PWD) clean

    4. 在源码目录运行 make 命令编译,没有 make 或 gcc 的自行安装
    5. 加载内核模块:insmod nf_deaf.ko ,若命令 lsmod |grep nf_deaf 有返回那么就加载完成啦
    TonyBoney
        20
    TonyBoney  
       56 天前
    6. 接下来需要给特定数据包打标记,该内核模块的触发条件是 mark 的高 16 位为 0xdeaf ,低 16 位的定义如下所示:
    15:设置 TCP 的确认号
    14:设置 TCP 的序号
    13:设置 TCP 校验和
    12-10:指定重复发送的次数
    9-5:设置延迟发送时间(jiffies)
    4-0:设置 TTL 值
    那么我们想把 TTL 设置为 2 ,别的不变,只需要设置 mark 为 0xdeaf0002 ,仅修改总大小大于 120(ipv4)和 100(ipv6)的包,避免影响握手
    TonyBoney
        21
    TonyBoney  
       56 天前
    7. 如果用 nftables ,ipv4 和 ipv6 的命令分别是:(自行修改目的地址,自担风险,小心连不上服务器)
    nft insert rule inet filter postrouting ip daddr {1.1.1.1} tcp dport { 0-65535 } meta length gt 120 meta mark set 0xdeaf0002 return comment "hahaha"

    nft insert rule inet filter postrouting ip6 daddr {2606:4700:4700::1111} tcp dport { 0-65535 } meta length gt 100 meta mark set 0xdeaf0002 return comment "hahaha"
    8. 如果用 iptables ,ipv4 和 ipv6 的命令分别是:(自行修改目的地址,自担风险,小心连不上服务器)
    iptables -t mangle -A POSTROUTING -d 1.1.1.1 -p tcp --dport 0:65535 -m length --length 121:65535 -j MARK --set-mark 0xdeaf0002 -m comment --comment "hahaha"

    ip6tables -t mangle -A POSTROUTING -d 2606:4700:4700::1111 -p tcp --dport 0:65535 -m length --length 101:65535 -j MARK --set-mark 0xdeaf0002 -m comment --comment "hahaha"
    Ipsum
        22
    Ipsum  
       56 天前
    下一步就是免流技术的大胜利?从来没想过这种技术会用来解决回家的问题。
    zer
        23
    zer  
       56 天前
    感觉可以搞成 openwrt kmod 插件
    LGA1150
        24
    LGA1150  
    OP
       56 天前
    @skylancer
    @Ipsum
    的确可以用来过墙,反正原理差不多,只是黑名单白名单的区别
    shomaru
        25
    shomaru  
       54 天前 via Android
    @TonyBoney 大佬能否加个 q 指导一下
    szdosar
        26
    szdosar  
       53 天前
    就是告诉看门的保安大叔,我是厂长的小舅子,厂长他刚买了台 su7u ,帮他提车的。
    保安大叔一看,放行,并且场内不限速,直接飙到时速 350KM
    Lentin
        27
    Lentin  
       52 天前
    参考 #19 楼大哥的步骤搓了一个飞牛 os 的内核文件,实测如果是旁路设备的话需要 ttl 改为 3 也就是对应的 mark 为 0xdeaf0003

    飞牛 OS 内核版本 Linux fnOS 6.6.38-trim #92 SMP PREEMPT_DYNAMIC Tue Mar 11 17:22:50 CST 2025 x86_64 GNU/Linux

    https://drive.google.com/file/d/1O9HRTqfJrxhuCaFlNMVT9rxNTd9eNaYt/view?usp=drive_link

    自己编译的话 build 目录的文件是从这个包里解包出来的,系统内没有这个 build 目录
    https://download.liveupdate.fnnas.com/x86_64/kernel/6.6.38-trim-92.deb
    dhdjfnnf
        28
    dhdjfnnf  
       52 天前
    大佬,这个方法可以解决 pt 限速的问题吗?
    sadan9
        29
    sadan9  
       51 天前   ❤️ 1
    编译了一个 openwrt 版,测试中.....
    tibbersvs
        30
    tibbersvs  
       51 天前
    @sadan9 大佬求带上车
    siyanmao
        31
    siyanmao  
       51 天前
    对 UDP 流量,伪装成 QUIC 会有效果吗…
    qwvy2g
        32
    qwvy2g  
       51 天前
    @sadan9 源码里面没有 kmod-debugfs 这个模块,没法继续下去。
    sadan9
        33
    sadan9  
       50 天前
    @qwvy2g 你说的"源"还是"源码"? debugfs 应该是很古老的模块了。
    c398425861
        34
    c398425861  
       49 天前
    ImmortalWrt 可以弄吗
    MutuMutu
        35
    MutuMutu  
       46 天前
    @sadan9 大佬测得咋样了
    lovexiaofan12312
        37
    lovexiaofan12312  
       40 天前
    openwrt 已经加载模块,就是不知道怎么详细使用,来个大佬
    mac100
        38
    mac100  
       26 天前
    @lovexiaofan12312 模块 怎么打包的?
    Lentin
        39
    Lentin  
       26 天前
    @TonyBoney #21 老哥 请问一下有没有办法 iptables 放行这个路径的流量,这种路径 ipv4 访问的话访问会有问题,nf_deaf 的设备旁路部署的
    Phone ( LAN )--光猫( WAN )-- 软路由( LAN )
    192.168.1.10 -- 123.123.123.123:80 -- 192.168.1.2:80
    测试过需要放行 123.123.123.123 才能正常访问,但是家宽公网 ip 是随机的,不太好锁定地址。。有没有除了用脚本获取公网 ip 自动添加规则以外的其他方案?
    LGA1150
        40
    LGA1150  
    OP
       26 天前
    @Lentin 这个怎么到光猫转了一圈又回到 LAN 了?是不是光猫开了 nat loopback ,你用公网 IP:端口访问内网服务?
    Lentin
        41
    Lentin  
       26 天前 via iPhone
    @LGA1150 对 平时用家里的节点回家+梯子 ,回家了用上这个模块就不通了,想知道有没有别的好点的方法用 iptables 解决这个问题,不然就只能写 ssid 策略了,光猫似乎没地方关闭 nat loopback
    LGA1150
        42
    LGA1150  
    OP
       25 天前
    @Lentin 如果关了 nat loopback 你就彻底不能通了。
    在软路由上抓包看,经过光猫 nat loopback 之后的源 IP 目的 IP 是多少?
    Lentin
        43
    Lentin  
       25 天前
    @LGA1150 #42
    软路由看到的源 ip 是光猫的公网 IP123.123.123.123 ,目的 IP 是软路由的内网地址 192.168.1.2
    LGA1150
        44
    LGA1150  
    OP
       25 天前
    @Lentin 那光猫这个实现有 bug ,OpenWrt 的默认用 LAN IP 当源 IP 的(可选 WAN IP )。

    不过既然改不了,就只能在软路由加个过滤规则。我给几个思路:
    1 、排除你的节点端口
    2 、从光猫访问软路由属于传入连接,使用 conntrack 区分这个连接是外部发起的还是本地发起的,并用 connmark 标记,之后就可以排除不是本地发起的连接;
    3 、如果还是想匹配传入连接,可以在 2 )的基础上,过滤 TTL 。由于光猫和软路由在同一网段,TTL 一般是个二进制整数:64 或 128 或 255 (不是 256 因为 TTL 最大就 255 ),而从光猫 WAN 外部进入的连接,由于经过了多个路由器,TTL 一般不是整数。这样可以区分 WAN 传入连接 和 光猫自己发起的连接。
    Lentin
        45
    Lentin  
       25 天前
    @LGA1150 #44 可以了,我加了一个 ttl 排除的规则就行了,经过测试测试用网线的话源 IP 是内网地址,wifi 的话会被映射为公网源地址,旁路部署需要给 set-mark 的 2 改成 3
    iptables -t mangle -A POSTROUTING -p tcp --dport 0:65535 \
    -m length --length 121:65535 \
    -m ttl ! --ttl-eq 64 \
    -j MARK --set-mark 0xdeaf0003
    lqu3j
        46
    lqu3j  
       22 小时 16 分钟前
    测试有效,这边电信确实能破解了限速
    lqu3j
        47
    lqu3j  
       22 小时 16 分钟前
    @lqu3j 成都电信
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3828 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:17 · PVG 13:17 · LAX 22:17 · JFK 01:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.