免费注册 查看新帖 |

Chinaunix

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

[欢迎进入讨论] 关于syn-proxy的一些问题 [复制链接]

论坛徽章:
0
81 [报告]
发表于 2009-03-16 14:13 |只看该作者
记得当初九贱兄也是自己一点一点慢慢摸索出来的,大概有一年了吧?
不知道效率如何?有没有新的改动呢?

论坛徽章:
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
82 [报告]
发表于 2009-03-16 14:24 |只看该作者
原帖由 独孤九贱 于 2009-3-16 13:38 发表
楼上的,你让给服务器的syn请求穿过netfilter连接跟踪表(事实上,如何是使用netfilter的状态跟踪,而不是自己来实现,也应该这样做),这个信息不就有地方存储了吗?


采用syncookie + conntrack机制的话,个人觉得流程如下可以:
(1)在PREROUTING处conntrack前注册syncookie的hook函数。fw完成处理和client端SYN三次握手,同时保存初始的SYN包,并记录cookie值。经过验证之后,将保存的SYN包发给server。
(2)fw发给server的syn包经过conntrack,新建一个conntrack表项,并在报文离开fw时加入连接跟踪表。
这里如何获取cookie的值,让(1)模块中提供函数吗?
(3)server回复的SYN+ACK报文,
fw应该在哪里拦截,应该是在conntrack之后吧。这样可以保证conntrak得到更新。这里可以记录server发过来的SEQ。
(4)fw拦截到SYN+ACK,构造ACK报文,
这次还能再更新conntrack吗?ACK报文应该是经过FORWARD点从POSTROUTING出去了吧。如果可以更新,则conntrack表有了这一项。
(5)以后属于这个链接的报文,就直接查链接跟踪。并根据报文的方向和差值对ACK(client)号就行修改还是对SEQ号进行修改。
而这个差值应该就是fw构造的cookie值和server回复SYN+ACK的SEQ的差值。

以上是个人觉得实现的流程,还有一些疑问。大家分析一下可行性啊.

论坛徽章:
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
83 [报告]
发表于 2009-03-16 14:57 |只看该作者
继续讨论这个:wink:

论坛徽章:
0
84 [报告]
发表于 2009-03-16 15:06 |只看该作者
原帖由 Godbach 于 2009-3-16 14:24 发表


采用syncookie + conntrack机制的话,个人觉得流程如下可以:
采用syncookie + conntrack机制的话,个人觉得流程如下可以:
(1)在PREROUTING处conntrack前注册syncookie的hook函数。fw完成处理和client端SYN三次握手,同时保存初始的SYN包,并记录cookie值。经过验证之后,将保存的SYN包发给server。
(2)fw发给server的syn包经过conntrack,新建一个conntrack表项,并在报文离开fw时加入连接跟踪表。这里如何获取cookie的值,让(1)模块中提供函数吗?

我觉得(2)可以在(1)中完成。在拦截到client发来的ack包的时候。

论坛徽章:
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
85 [报告]
发表于 2009-03-16 15:11 |只看该作者
原帖由 richardhesidu 于 2009-3-16 15:06 发表

我觉得(2)可以在(1)中完成。在拦截到client发来的ack包的时候。


拦截到ACK的时候,fw应该是将原先保留的SYN包发出去,然后这个SYN包就会进入conntrack进行处理了。按理说这个时候新建了conntrack,应该让conntrack记录下之前的cookie值了。

论坛徽章:
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
86 [报告]
发表于 2009-03-16 15:12 |只看该作者

回复 #84 richardhesidu 的帖子

这个应该没有太大关系。关键是后面的(3)、(4)、(5)。具体的处理方式是否正确呢

论坛徽章:
0
87 [报告]
发表于 2009-03-16 15:15 |只看该作者
原帖由 Godbach 于 2009-3-16 15:11 发表


拦截到ACK的时候,fw应该是将原先保留的SYN包发出去,然后这个SYN包就会进入conntrack进行处理了。按理说这个时候新建了conntrack,应该让conntrack记录下之前的cookie值了。

cookie值在client的ack包里有啊。

论坛徽章:
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
88 [报告]
发表于 2009-03-16 15:18 |只看该作者
原帖由 richardhesidu 于 2009-3-16 15:15 发表

cookie值在client的ack包里有啊。


对。但是client的ACK到fw的syncookie就被处理了,不会交给conntrack处理了。fw再次发送的SYN到server才经过了conntrack的。前面的cookie值应该通过一定的方式给conntrack。

论坛徽章:
0
89 [报告]
发表于 2009-03-16 15:31 |只看该作者
可能我有什么没考虑到。
不能在接收到client的ack包的地方建立conntrack表项吗?

论坛徽章:
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
90 [报告]
发表于 2009-03-16 15:49 |只看该作者
原帖由 richardhesidu 于 2009-3-16 15:31 发表
可能我有什么没考虑到。
不能在接收到client的ack包的地方建立conntrack表项吗?


cookie的验证过程是在conntrack之前的。需要建conntrack表的时候是从fw发送SYN包到server的过程,这个过程会建conntrack表。这个表的源IP和目的IP就是client和server的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP