免费注册 查看新帖 |

Chinaunix

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

[内核模块] netfilter构造包,建立连接 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-04-16 11:32 |只看该作者 |倒序浏览
若在主机B的PREROUTING钩子点截获一个A到B的skb,更改源为B目的为C,以及mac等信息,然后直接调用dev_queue_xmit(skb)发送。结果就是C返回B(syn,ack),然后B再回复C(rst)。我想问一下,B怎样在内核下构造skb,才能与C正常进行连接(不至于B总是回复rst断开连接),是需要修改skb的某些有关连接跟踪的信息吗?
请求大家回复了,非常感谢!

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
2 [报告]
发表于 2013-04-16 13:13 |只看该作者
回复 1# liziaiya
你的B只是转发了一下数据,并没有建立相应的conntrack信息。

不过话说回来,你这个需求比较奇怪,应该有其他的方法满足你的需求,不一定非得自己写这么奇怪的代码。
Maybe tproxy

   

论坛徽章:
0
3 [报告]
发表于 2013-04-16 17:05 |只看该作者
回复 2# 瀚海书香 非常谢谢你的回答,觉得你好友善呐。:wink:其实我最近一直在研究端口重定向的问题,就是作类似redir,FPipe之类的工具。但是想要在linux内核下实现。譬如说A想和防火墙内的C(23端口)通信,但是防火墙不允许23,所以A与防火墙内的B(80端口)连接,然后重定向到C的23端口,算是穿透防火墙的端口封锁吧!
于是我在B上基于netfilter对A->B的报文做了dnat(将目的ip置为C),然后在post routing做了snat(将发往C的报文源IP置为B),具体的也是参照ipt_REDIRECT.c写的。这样,我希望报文经过B的钩子函数时产生这样的变化,如下:
发送:
pre_routing: AB->AC
post_routing :AC->BC
回复
pre_routing:CB->CA
post_routing:CA->BA
我不知道我的思路有没有问题,之前总是难以实现remote redirect,希望你可以给我建议,同时不知道linux内核实现穿透防火墙的端口封锁这个问题,你有没有什么更好的方法?


   

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
4 [报告]
发表于 2013-04-16 18:17 |只看该作者
回复 3# liziaiya
你应该看看tproxy的实现

   

论坛徽章:
0
5 [报告]
发表于 2013-04-17 15:02 |只看该作者
回复 4# 瀚海书香
恩,好的,我先看看tproxy

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP