自用了很久的玩具项目 https://github.com/LGA1150/nf_deaf
原理:TCP 三次握手后在真实的请求之前发送一个在白名单之内的伪造请求,理论上不需要有服务器转发。
使用 skb fwmark 控制,兼容 iptables/nftables 。
伪造请求内容可自定义。
![]() |
1
wyntalgeer 59 天前
旁路部署?
|
![]() |
2
sadan9 59 天前
关键添加的数据如何不影响正常的通信。
|
![]() |
4
des 59 天前
这个咋用啊
|
![]() |
5
Lentin 58 天前
等个使用说明书~。~
|
![]() |
6
Chihaya0824 58 天前
野生的 kmod 出现了,这个性能怎么样啊,可以无脑给所有流量 setmark 吗?
|
![]() |
7
lambdaq 58 天前
好家伙。0 注释!
|
8
bosonx 58 天前 via Android
等一个教程
|
9
VwEI 58 天前
等一个教程
|
10
aa51513 58 天前
你也太高看我了,一行注释都没有,怕是一时半会儿看不懂
|
11
skylancer 57 天前
这个方式有人用来过墙的,我也没想过能绕过限速...
|
12
skylancer 57 天前
这个方式有人用来过墙的,我也没想过居然能绕过限速...
|
13
hondaya 57 天前
同求教程,我这非 443 端口上传流量大点就限制上传速率到 0.5 Mbps ,节点,frp 都没法用。自建节点和 frp 域名改成 speedtest 开头的就不限速了。
|
14
thinsychen 57 天前
无需旁路部署,在有权限的路由上可以部署,
实测 内核 5.15 sh telecom 可以破解 TCP 限速 5M ,基本达到满速!感谢楼主提供的思路。 |
15
thinsychen 57 天前
或者 客户端部署也可以。
|
16
huaxie1988 57 天前
怎么使用呢
|
17
leeyijie 56 天前
收藏一下
|
18
bhkkvip 56 天前
用 deepseek 翻译了一遍,又问了下怎么用,大概好像知道了...
|
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 有返回那么就加载完成啦 |
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)的包,避免影响握手 |
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" |
![]() |
22
Ipsum 56 天前
下一步就是免流技术的大胜利?从来没想过这种技术会用来解决回家的问题。
|
![]() |
23
zer 56 天前
感觉可以搞成 openwrt kmod 插件
|
26
szdosar 53 天前
就是告诉看门的保安大叔,我是厂长的小舅子,厂长他刚买了台 su7u ,帮他提车的。
保安大叔一看,放行,并且场内不限速,直接飙到时速 350KM |
![]() |
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 |
28
dhdjfnnf 52 天前
大佬,这个方法可以解决 pt 限速的问题吗?
|
![]() |
29
sadan9 51 天前 ![]() 编译了一个 openwrt 版,测试中.....
|
31
siyanmao 51 天前
对 UDP 流量,伪装成 QUIC 会有效果吗…
|
34
c398425861 49 天前
ImmortalWrt 可以弄吗
|
37
lovexiaofan12312 40 天前
openwrt 已经加载模块,就是不知道怎么详细使用,来个大佬
|
38
mac100 26 天前
@lovexiaofan12312 模块 怎么打包的?
|
![]() |
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 自动添加规则以外的其他方案? |
![]() |
41
Lentin 26 天前 via iPhone
@LGA1150 对 平时用家里的节点回家+梯子 ,回家了用上这个模块就不通了,想知道有没有别的好点的方法用 iptables 解决这个问题,不然就只能写 ssid 策略了,光猫似乎没地方关闭 nat loopback
|
![]() |
42
LGA1150 OP @Lentin 如果关了 nat loopback 你就彻底不能通了。
在软路由上抓包看,经过光猫 nat loopback 之后的源 IP 目的 IP 是多少? |
![]() |
44
LGA1150 OP @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 传入连接 和 光猫自己发起的连接。 |
![]() |
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 |
46
lqu3j 22 小时 16 分钟前
测试有效,这边电信确实能破解了限速
|