LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

网络代理:Socks5与Shadowsocks

admin
2025年7月13日 1:7 本文热度 44

一、什么是网络代理?


当我们想访问一些不被允许或受限的网络资源的时候,为了绕过公司网管的访问限制,我们可以将访问请求发送给一台非受限主机,然后让它代理我们去访问那些受限网络资源,并将收到的响应数据再传送给我们,这样我们就能够通过这台代理主机间接访问那些受限的网络资源,这就是我们常说的网络代理。而这种代理我们(客户端)访问特定网络资源的网络代理称为正向代理;相对于正向代理,代理服务器响应客户端访问请求的网络代理称为反向代理,反向代理主要应用于服务器集群架构中。我们平时说的网络代理泛指正向代理,是日常上网较常见的。

网络代理本质就是一种数据中继技术,它的实现通常涉及四个组件:


1) 应用程序,安装在用户终端内的提供某种特定服务的客户端程序,譬如浏览器。


2) 代理客户端,安装在用户终端内的负责监听和截获应用程序对网络资源的访问,并将收到的请求资源交付给应用程序。


3) 代理服务器,一台外部主机,负责与目标服务器建立通信连接,在代理客户端和目标服务器之间转发用户数据。


4) 目标服务器,提供特定网络资源的主机。


我们经常说的SSL VPN的Clientless和Thin-Client模式本质上也是一种网络代理技术。很多人将网络代理视为VPN,实际上他们的工作原理并不相同,网络代理通过代理服务器充当中间人转发用户终端和目标服务器之间的数据流量,从而绕过网络限制访问那些受限的网络资源。不仅如此,通过使用缓存机制网络代理还能用于网络加速,提高网络访问速度,其中一个典型的应用就是基于HTTP代理的网络加速器。而VPN通常是通过在公共网络基础上利用加密/封装技术构建一个点到点的隧道,用户通过这条隧道实现对特定资源(大多数是企业内网资源)的访问,其中一个最为典型的应用是IPSec VPN。


二、Socks5与Shadowsocks

1. Socks5协议


Socks5是Socks协议的第五个版本,在Socks4的基础上新增UDP转发和认证功能,是互联网上最典型的一个网络代理协议,它的基本工作原理如下图所示:


图片来源网络


1) 首先Socks5客户端与Socks5服务器TCP三次握手建立一条TCP连接。


2) 然后执行Socks5握手,协商协议版本号、支持的认证方法,对Socks5客户端进行认证(如果配置了验证)。


3) Socks5协商和认证成功后,当用户通过应用程序访问特定网络资源时,Socks5客户端监听并截获到应用程序的访问请求,然后向Socks5服务器发起连接请求。请求的内容包括,应用程序要访问的目标服务器ip地址或域名和端口等信息。


4) 收到客户端的连接请求后,Socks5服务器和目标服务器进行TCP三次握手建立TCP连接。然后向Socks5客户端发送一条Socks5响应消息,通知对方到目标服务器的连接已经建立成功。


5) Socks5客户端将收到的来自应用程序的数据(可能是应用层的数据,也可能是传输层之上的数据,譬如SSL协议报文)通过1)所建立的TCP连接原样发送给Socks5服务器;Socks5服务器再将数据通过4)建立的TCP连接原样发送给目标服务器;目标服务器收到应用程序的数据后,反向将响应数据发送给用户端的应用程序。

通过Socks5的工作过程不难发现,Socks5网络代理明文原样转发应用程序和服务器之间交互的数据,它自身没有数据加密功能,为了保障传输过程中数据的机密性和完整性,通常需要依赖代理的上层应用自身对数据进行加密/完整性校验等处理。谈到这里,想必大家最关心的问题是,通过Socks5能够绕过网管限制访问那些受限网络资源吗?答案是当然不能。因为Socks5明文传输数据,数据内容一目了然,当访问那些受限网络资源时,很容易被过滤掉,而且像Socks5/IPSec VPN这类协议协议特性明显,因为他们的通信报文格式,协商过程等都是明文规范好的很容易识别,在没有获得公司网管授权的情况下,通常不会允许这种代理/VPN报文通过。


2. Shadowsocks协议


为了绕过公司网管的网络限制,访问那些受限的网络资源,需要解决网络代理明文传输数据、协议特性明显等问题,避开公司网管的火眼金睛。因此,有大神就在Socks5的基础上开发出了大名鼎鼎Shadowsocks协议也就是影梭。


首先看一下Shadowsocks网络代理结构和组件:



1) Socks5客户端,安装在用户终端内,作为代理客户端负责监听和截获应用程序的访问请求,与Ss-local执行Socks5握手协商、交互用户数据。


2) Ss-local,同样安装在用户终端内,冲当Socks5服务器,负责与Socks5客户端执行握手、用户数据交互,将用户数据加密后发送给Ss-server。


3) Ss-server,一台外部代理服务器,负责与目标服务器建立通信连接,接收Ss-local加密的用户数据,解密后转发给目标服务器,同时将收到的目标服务器的响应数据加密后发送给Ss-local。


4) 目标服务器,提供特定网络资源的主机。


从Shadowsocks代理结构可以看出,Shadowsocks将Socks5服务器功能拆分成两部分:


Ss-local作为Socks5服务器端,负责监听Socks5 客户端请求,与Socks5客户端进行 Socks5 协议相关的握手协商、处理连接请求、接收用户数据。但它并不将用户数据直接发送给目标服务器,而是发送给Ss-server。Ss-server作为代理服务器,负责与目标服务器建立通信连接,将用户数据转发给目标服务器。


这样做的好处是,Socks5客户端和Ss-local都是安装在用户终端内,Socks5协议握手协商是在本地完成的,降低了网络延时,加快Socks5协商过程,并且隐藏了Socks5握手过程中的协议特征。


注:Ss-local和Ss-server之间并不运行Socks5握手协商。


Ss-local与Ss-server之间运行自定义的Shadowsocks协议,它定义了数据传输规则、数据加解密算法(AEAD加密/流加密)、预共享密钥方式的身份验证、数据混淆插件等,对传输的用户数据进行加密处理,这样就保证了数据的机密性。同时可以使用数据混淆插件(simple-obfs)对加密后的数据进行混淆去掉流量特征,把Ss-local和Ss-server之间的流量伪装成普通的TCP或UDP流量。


注:Ss-local与Ss-server之间它们之间并不进行密钥协商和交换。加密密钥通过什么算法产生的,本人并没有深入了解,有兴趣的朋友可以查看一些相关文章。


Ss-local发送给Ss-server加密前的数据格式为:



target address:目标服务器的IP地址或域名以及端口号,它的格式为:

[1-byte type][variable-length host][2-byte port]

type:地址类型

10x01: host是一个4-byte的IPV4地址。2. 0x03: host是一个变长字符串。第一个byte是一个变长字符串长度, 接下来是一个最长255byte的域名。

3. 0x04: host是一个IPV6地址。

port:端口号

payload:用户数据


注:Ss-server发送给Ss-local加密前的数据格式不含target字段。


Ss-local和Ss-server之间传输的加密后的数据格式为:


使用流加密后的数据格式


使用AEAD加密后的数据格式,只有数据流的首包携带salt,用于计算解密KEY。
[salt][encrypted length][length tag][encrypted payload][payload tag]

最后我们看一下Shadowsocks的基本工作过程:


1) Socks5客户端与Ss-local建立TCP连接,进行Socks5握手协商。


2) Socks5客户端截获应用程序的网络访问请求后,向Ss-local发送连接请求。


3) Ss-local收到客户端的连接请求后,向Ss-server发起TCP三次握手,建立TCP连接。然后向Socks5客户端发送一条Socks5响应消息,通知对方连接成功。


4) Socks5客户端将用户数据发送给Ss-local,Ss-local对用户数据进行加密和混淆(可选)处理后,发送给Ss-server。


5) Ss-server解密收到的用户数据,并根据target字段解析出目标服务器的IP地址/域名以及端口号。然后向目标服务器发起TCP三次握手,建立TCP连接,将用户数据转发给目标服务器。目标服务器将响应数据再反向发送给应用程序。


正所谓道高一尺魔高一丈,随着网络监管技术的不断发展和提高,Shadowsocks也在不断地演变和进化,以满足一些人科学上网的需求。


阅读原文:原文链接


该文章在 2025/7/14 18:42:04 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved