免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3934 | 回复: 19
打印 上一主题 下一主题

[内核入门] 在netfilter的5个钩子点处构造包,并发送的问题 [复制链接]

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-02-12 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-10-07 01:43 |只看该作者 |倒序浏览
需求是这样的,netfilter有5个钩子点,要求在任意一个钩子点处构造数据包发送,并在任意一个钩子点处接受,这可以实现吗?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
2 [报告]
发表于 2015-10-08 15:21 |只看该作者
回复 1# 买单老

构造包并发送应该没问题。

但是你说的任意钩子点接受,怎么理解?

还有,你这么做,到底是什么需求呢。

   

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-02-12 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
3 [报告]
发表于 2015-10-09 01:12 |只看该作者
非常感谢你能回复我的帖子,由于白天在公司不能登录外网,只能回家后回复了。
需求就是:比如网页下发两个检测点,一个是input(可以选择5个钩子点中的人一个),一个是output(可以选择5个钩子点中的人一个),
下发这些数据到后台后,后台再下发给内核ko模块(肯定是自己的某个功能模块),这个模块就会在input点和output点做事情。
input钩子点就会做在这个点自动构造包并发送,output点就会将收到的数据使用netlink上传到后台(用户程序)。这整套方案,你看能否实现,合理不?回复 2# Godbach


   

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
4 [报告]
发表于 2015-10-09 12:26 |只看该作者
回复 3# 买单老

感觉你描述的仍然是实现方法,最原始的需求是要实现什么功能。在内核态里构造数据包,并发出去的这种方式,在结合实际需求之后,往往应该有更合适的解决方案。

   

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-02-12 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
5 [报告]
发表于 2015-10-09 22:17 |只看该作者
需求就是如我上次回复你说的那样,方便的话,能告诉我企鹅通讯号吗,我想仔细地请教你
回复 4# Godbach


   

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
6 [报告]
发表于 2015-10-10 19:17 |只看该作者
回复 5# 买单老

需求就是:比如网页下发两个检测点,一个是input(可以选择5个钩子点中的人一个),一个是output(可以选择5个钩子点中的人一个),
下发这些数据到后台后,后台再下发给内核ko模块(肯定是自己的某个功能模块),这个模块就会在input点和output点做事情。
input钩子点就会做在这个点自动构造包并发送,output点就会将收到的数据使用netlink上传到后台(用户程序)。这整套方案,你看能否实现,合理不?


我的意思,你这个描述不是最原始的需求,而可能是你把最原始需求转化成了解决方案之后,变成了你的实现需求了?

其实,更愿意听你介绍你最原始的需求,为什么会这么玩儿 netiflilter 的 Hook。
   

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
7 [报告]
发表于 2015-10-10 19:18 |只看该作者
回复 5# 买单老

建议就在论坛讨论问题吧,这样能够参与讨论问题的人多一些,会对你解决问题提供更多思路。


   

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-02-12 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
8 [报告]
发表于 2015-10-12 22:07 |只看该作者
昨天的回复居然没有成功,难怪我一天都看不到我自己的回复。

为什么这么玩netfilter的HOOK,还不是客户的要求吗,唉。
客户就是要求在任意一个钩子点处发送报文,在任意一个钩子点处接收报文。
目前我的接收报文已经大体有思路了,将抓取的报文通过netlink上传给用户空间程序。
然而针对发送报文,一点头绪都没有,有如下问题:
1.针对在每一个点发包,那么每一个点的包应该是什么格式的?
2.构造好每一个点的包后,使用什么方式发送呢(使用什么函数)?

麻烦讲解一下啊,谢谢啦

回复 6# Godbach


   

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
9 [报告]
发表于 2015-10-15 16:17 |只看该作者
回复 8# 买单老

你指的是,你需要想让报文传递到用户空间,然后用户空间做检查,并发指令,告诉这个报文,需要通过那个 hook 点发出去?


   

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-02-12 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
10 [报告]
发表于 2015-10-15 23:52 |只看该作者
恩,差不多是这个意思,谢谢你的持续支持啊。
我在另外一个帖子里《 新版本内核构造包发送问题》已经实现了通过dev_queue_xmit发UDP包,
不过,发TCP包,对端收不到,我在想是不是没有建立3次握手的原因呢?

另外,领导除了要求使用dev_queue_xmit发包外,还要用netif_receive_skb发包(发这个包到内核,让pre routing这个钩子点注册的
回调函数接收到),具体的问题请观看我的另外帖子《新版本内核构造包发送问题
回复 9# Godbach


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

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP