找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 825|回复: 4

秦墓古董重见天日系列之:开源特征码识别模块 nDPI 应用于openwrt 的实操案例

[复制链接]
本帖最后由 wulishui 于 2023-10-31 11:39 编辑

无意中我翻到 https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=128570&highlight=ndpi ,这是整整10年前的东西了。
我去翻了下我自己的仓库,居然我也存有,只是当年水平有限,并没有用过。
近来肉体饱受折磨,人品却大爆发,几乎看中什么插件就拿来改一下都能用。于是动了玩这个的念头。
首先,在github上一位富强兄有一个ndpi-openwrt项目:https://github.com/openwrt-develop/ndpi-netfilter(当然,也是秦朝古坟了)
ndpi可是持续开发的,最新的更新在5天前。所以并不是落后的东西。
富强兄的makefile需要动一下手脚:
1.把PKG_SOURCE_VERSION的commit换成最新的,把PKG_MIRROR_HASH改成skip,因为懒得去生成校验码
2.增加内核补丁,ndpi提供了5.4,6.1.38(在这里:/ndpi-netfilter/kernel-patch),我们编译5.15、6.1他没有补丁,我们需要自己改(你不加内核补丁,去改源码也能编译,开开心心以为能用,这是个错觉)。
但是改好之后一对比,特么5.15的和5.4的完全一样,所以6.1的应该也和6.1.38一样,5.10和5.4一样,我们偷懒吧,不改了:
找到 define Build/Compile ,下面加上3行即可,于是5.10,5.15,6.1的补丁都有了。
  1. define Build/Compile
  2.         (ln -s $(PKG_BUILD_DIR)/ndpi-netfilter/kernel-patch/v5.4.diff $(PKG_BUILD_DIR)/ndpi-netfilter/kernel-patch/v5.10.diff )
  3.         (ln -s $(PKG_BUILD_DIR)/ndpi-netfilter/kernel-patch/v5.4.diff $(PKG_BUILD_DIR)/ndpi-netfilter/kernel-patch/v5.15.diff )
  4.         (ln -s $(PKG_BUILD_DIR)/ndpi-netfilter/kernel-patch/v6.1.38.diff $(PKG_BUILD_DIR)/ndpi-netfilter/kernel-patch/v6.1.diff )
复制代码
富强兄的patches可以删除不用,如果你很想用,自己可以根据新版源码修改。
然后make menuconfig选上iptables-mod-ndpi,编译就行了。
你可以打开源码包,在/ndpi-netfilter/找到 FLOW_INFO.txt,上面说了调试、使用方法。
我们把这一段东西放在“自定义防火墙”,按保存后重启系统:
  1. echo "xt_ndpi ndpi_enable_flow=1" > /etc/modules.d/ipt-ndpi

  2. iptables -t mangle -A INPUT -m ndpi ! --error -j NDPI --flow-info
  3. iptables -t mangle -A FORWARD -m ndpi ! --error -j NDPI --flow-info
  4. iptables -t mangle -A OUTPUT -m ndpi ! --error -j NDPI --flow-info
复制代码
进入系统然后 cat /proc/net/xt_ndpi/flows 可以看到实时的数据识别信息(是实时的,不是累计的),


如果你看到有数据了,那么可以进入实用篇:
终端输入iptables -m ndpi -h 可以输出详细使用帮助(但一般人看不懂),所以还是俺来说吧:
iptables用法实例:iptables -m ndpi --proto ndpi协议,多个协议可以使用逗号拼接,比如 -m ndpi --proto dhcp,dns,icmp,ftps ,实际如下
  1. iptables -t nat -A PREROUTING -m ndpi --proto dhcp,dns,icmp,ftps -j MARK --set-mark 0x104
  2. # 查看所匹配的流量:
  3. iptables -t nat -L PREROUTING -nv
复制代码
链与-j的动作根据实际需要改动即可,比如INPUT, -j DROP。
ndpi目前支持的协议有(当前有352个):

  1. <blockquote>  1kxun                accuweather          activision           ads_analytic_track   
复制代码
有qq有wechat,特么就是没有xunlei。哪位高人加上吧!
我试着做到了我自己的qos上:



用来做流控可能不太好,感觉它识别的是协议包,而不是流,也就是发起协议的包能控制,传输数据的流没法控制。所以用来做协议识别行,做协议控制行,做流控可能效果不好。
这玩意自定义协议很难,已有协议多数是国外软件,国内的少之又少,想要添加还得需要从源码里加,所以用来做行为控制也不现实
以上编译x86通过。mipsel通不过,linux的makefile有问题,
arch/mipsel/Makefile: No such file or directory,
肯定不存在啦,都是使用的arch/mips/,哪里有arch/mipsel/。
你要是改了也不行,还有更多的问题。浪费脑筋在这里,明显不值当。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
牛的 这个的CPU使用大概怎么样?
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

真能折腾,话说某些闭源路由OS是不是就用了这个来识别和限制协议?
然后……新版op都用nftable了,撸主再多走一步作出贡献适配呀

点评

没钱赚的东西,哪有那个动力。只要资金到位,开夜干。  详情 回复 发表于 2023-10-30 23:55
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
avin4 发表于 2023-10-30 22:35
真能折腾,话说某些闭源路由OS是不是就用了这个来识别和限制协议?
然后……新版op都用nftable了,撸主再多 ...

没钱赚的东西,哪有那个动力。只要资金到位,开夜干。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

感谢大佬分享
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-28 18:45

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表