免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 买单老
打印 上一主题 下一主题

[内核入门] 在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
11 [报告]
发表于 2015-10-16 02:03 |只看该作者
回复 10# 买单老

不过,发TCP包,对端收不到,我在想是不是没有建立3次握手的原因呢?


三次握手是 TCP 协议栈需要的逻辑,在到达 TCP 之前,也就是刚到 IP 层的时候,只要一个符合要求的 TCP 报文,是能够看到,也能抓包看到的。

你的这种情况,要看一下 TCP 和 IP 校验和是否计算正确了。我怀疑是你够早的报文,没有发出来。

至于你说用 netif_recieve_skb 发包,比较让人费解。你知道这个函数是干什么的吗?
   

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-02-12 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
12 [报告]
发表于 2015-10-16 23:39 |只看该作者
这个函数就是内核收到包之后调用的啊,我就是想让这个函数来接收我自己构造的包,让包流进协议栈回复 11# 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
13 [报告]
发表于 2015-10-18 22:59 |只看该作者
回复 12# 买单老

明白了。那我提到的一些可能的问题,你 check 没有。


   

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-02-12 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
14 [报告]
发表于 2015-10-19 21:00 |只看该作者
现在我这已经基本上实现调用dev_queue_xmit发送UDP数据和调用netif_receive_skb接收UDP数据了,
现在主要的问题还是我在另外的帖子提到的函数  undefined问题,如果真的要重新编译内核,我的天啊,
我现在相信墨菲定律了,一件事,你越怕,它越会发生

回复 13# 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
15 [报告]
发表于 2015-10-20 13:45 |只看该作者
回复 14# 买单老
要么就 hack 深入一把。找到这个函数的符号表。


   

论坛徽章:
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
16 [报告]
发表于 2015-10-20 13:45 |只看该作者
回复 14# 买单老
要么就 hack 深入一把。找到这个函数的符号表。


   

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-02-12 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
17 [报告]
发表于 2015-10-20 20:37 |只看该作者
现在已经重新编译内核了,可以使用了。不过接下来又遇到问题了。
调用ip_local_deliver进行在LOCAL_IN之前发包需要调用ip_route_input_noref进行路由选择,这样构造的包就触发LOCAL_IN点的钩子函数了。

疑问有如下:
1.如果我想让包进入FORWARD点,那么这个包构造呢?


对于LOCAL_OUT和POST_ROUTING点,我发现它们相关的导出函数中还需要一个struct sk* 参数,这如何构造啊?


回复 16# Godbach


   

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-08-17 06:20:00程序设计版块每日发帖之星
日期:2016-07-16 06:20:00程序设计版块每日发帖之星
日期:2016-07-18 06:20:00每日论坛发贴之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16赛季CBA联赛之江苏
日期:2017-06-26 11:05:5615-16赛季CBA联赛之上海
日期:2017-07-21 18:12:5015-16赛季CBA联赛之青岛
日期:2017-09-04 17:32:0515-16赛季CBA联赛之吉林
日期:2018-03-26 10:02:16程序设计版块每日发帖之星
日期:2016-07-15 06:20:0015-16赛季CBA联赛之江苏
日期:2016-07-07 18:37:512015亚冠之萨济拖拉机
日期:2015-08-17 12:21:08
18 [报告]
发表于 2015-10-21 12:34 |只看该作者
好奇怪的需求,领导/客户想用这个功能干什么?

比如领导/客户想要"把prerouting‘劫持’到output",背后的意图是1)还是2)?
1)仅仅让报文从output发出去(无任何状态);
2)让报文看起来像一个本地发送的?(比如跟某个app的socket管理起来,跟某个dst entry关联起来,等等),要不要解决应答报文的接收问题?<====== 这更像是要实现某种报文重定向(或者代理)的功能

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-02-12 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
19 [报告]
发表于 2015-10-21 23:08 |只看该作者
客户领导拍板,怎么说呢,具体的需求我也搞不懂回复 18# nswcfd


   

论坛徽章:
0
20 [报告]
发表于 2015-12-21 17:48 |只看该作者
买单老 发表于 2015-10-20 20:37
现在已经重新编译内核了,可以使用了。不过接下来又遇到问题了。
调用ip_local_deliver进行在LOCAL_IN之前 ...


想要转向FORWORD的HOOK点,应该要在PRE_ROUTE点把目标IP改成非本机吧,这样route检查时才会走FORWORD分支。这是我个人猜测啊,最近在研究协议栈代码。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP