免费注册 查看新帖 |

Chinaunix

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

socks5透明代理客户端设计问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-04 22:17 |只看该作者 |倒序浏览
在客户程序A与服务器程序B进行网络通信时,正常的过程应该是
1、A----(syn)----〉B
2、B----(syn ack)-----〉A
3、A-----(ack)-----〉B
三次握手完成,开始真正的数据传送。
如果客户程序A要通过socks5代理服务器C与服务程序B进行网络通信时,A先与C建立三次握手,然后A向C发送本次通信使用的socks5规则,C回

应A选定的规则,然后A向C发送B的ip和断口号,C回应通信邦定的ip和断口号,这些过程完成后,以后A直接将数据发送到C,C再将数据转发至B

完成通信。过程如下:
1、A----(syn)----〉C
2、C----(syn ack)-----〉A
3、A-----(ack)-----〉C
4、A-----(协商socks5通信的规则)------〉C
5、C------(应答使用的socks5通信规则)------>A
6、A------(B的ip和port)------>C
7、C------(邦定的ip和port)----->A

从上面的介绍可以看到,如果一个程序要通过socks5代理服务器通信,它将会多出4-7这几个包来实现socks5协议。
我的问题是这样的:
  想实现一个linux下的socks5透明代理客户端,就是当我开启这个软件时,系统中的其他网络通信程序会自动与代理服务器相

连(类似于windows下的eborder或者sockscap),实现4-7步。以前想过用netfilter的hook函数实现,但觉得netfilter主要是抓包,改变

包的结构,如果要实现发送新的数据报(4-7步的数据报)好像还有些问题,所以想请教一下高手,有没有什么可行的实现方法。

论坛徽章:
0
2 [报告]
发表于 2006-06-04 22:24 |只看该作者
如果在 netfilter 里做的话,要 NF_STOLEN 包,然后自己去处理
感觉这样处理起来比较复杂,恐怕要自己实现一个简单的协议栈了

论坛徽章:
0
3 [报告]
发表于 2006-06-06 10:00 |只看该作者
用协议栈会不会更复杂呢,大概是什么思路,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP