(socks5)服务器代理模型

来源:互联网 发布:mysql主键的唯一约束 编辑:程序博客网 时间:2024/05/02 01:13

一、什么是GFW
防火城墙(GFW)是由原北邮校长设计出来的,GFW将国内的网络屏蔽起来了,所以整个国内的网络就像一个大的局域网,我们是不能够直接访问墙外的网站的。
二、GFW的原理
GFW能够屏蔽网络主要从以下几个方面入手。
IP封锁:IP封锁是指GFW维护的一张黑名单,只要发现向这些IP数据包,就立即进行丢弃。(像google、faceboook、youtobe这些网站的IP就在黑名单里)
内容过滤:含有某些关键字的数据包一律进行丢弃。
域名劫持:我们要通过DNS服务器获取ip地址,所以当你向DNS服务器发出请求时,DNS服务器会给你返回一个错误的IP或根本不返回。
三、服务器代理模型
既然我们知道GFW屏蔽的原理,那么只要我们绕过这些屏蔽条件,就可以访问墙外的网络。
下面先来看一下客户端服务器代理模型:
这里写图片描述
IP封锁:因为我们访问的是代理服务器,代理服务器的IP肯定不在黑名单,所以IP封锁无效。
内容过滤:因为我们将数据进行加密,所以内容过滤也无效。
域名劫持:因为我们是知道代理服务器的IP地址的,所以不经过DNS解析,所以域名劫持也无效。

四、socks5协议
1、什么是socks5协议
在上面的代理模型中,我们用到的协议是socks5协议。socks5是一个代理协议,它在使用TCP/IP协议通讯的前端机器和服务器之间扮演一个中间角色,使得内部网中的前端机器变得能够访问Internet网中的服务器,或者使通讯更加安全。
socks5服务器通过将前端发送过来的请求转发给真正的目标服务器,模拟了一个前端行为。socks5之间也是通过TCP/IP协议进行通讯的,前端将原本要发送给真正服务器的请求发送给socks5服务器。

2、socks5协议简介
2.1、首先客户端和服务器进行连接。
2.2、连接成功后客户端再向服务器发送协商认证方式:
这里写图片描述
2.3、socks服务器评估请求,并建立适当的连接或拒绝。服务器从methods中给出的方法 选择一种,并向客户端发送选择的消息:
这里写图片描述
2.4、一但上面的协商完成,客户端就可以发送请求的详细信息。
这里写图片描述
2.5、socks请求信息由客户端发送之后,服务器要对请求信息作出评估,并发送回复。
这里写图片描述
标记RESERVED(RSV)的字段必须设置为X’00’.
2.6、如果上面的步骤没有问题的话,这时候就可以使用服务器进行代理访问了。
2.7、 socks5官方文档

五、服务器部署
1、源码(有注释)
2、没有国外的云服务器,所以只能用腾讯云测试测试(以后弄到国外的服务器之后再测一下),将服务器部署到腾讯云上。
3、测试之前先将浏览器设置为socks5代理(下面是firefox)
这里写图片描述
4、先不启动客户端,看看会出现什么结果
这里写图片描述
5、启动客户端之后,再测试一下,就可以访问了网络了
这里写图片描述