Shadowsocks:它是什么,如何工作,与VPN、Wireguard、UDP的比较
- Feb 9, 2024, 10:00 AM
- 4 分钟
什么是 Shadowsocks?
Shadowsocks 是一款免费工具,适用于那些希望以简单但不常见的方式绕过封锁的人。它是一种具有数据加密功能的网络协议。它还有助于保护流量和个人数据。它基于 SOCKS5 技术,源代码可在 GitHub 上获取。
该项目始于 2012 年。中国开发者 Clowwindy 在 GitHub 上发布了 Shadowsocks 的首批开发成果。该协议帮助绕过了“防火墙”的限制,即中国的长城防火墙。该项目在从 GitHub 移除后在全球范围内流行起来,这引起了媒体的关注。记者们猜测 移除与几天后发生的 GitHub 攻击之间存在关联。
Clowwindy 于 2015 年应中国当局的要求停止了开发。此后,Shadowsocks 社区一直在开发该项目。

自由之家网站上的地图展示了 Shadowsocks 在哪些国家肯定有用。
Shadowsocks 用于与 VPN 类似的任务:
- 绕过封锁。协议用于访问国内以及提供商和运营商封锁的资源。
- 保护个人数据。更难访问流量和个人数据。
- 从不受保护的点(例如通过免费 Wi-Fi)建立安全连接。
Shadowsocks 如何工作。协议解释
在标准网络连接中,用户通过其提供商直接连接到互联网。例如,如果他们想访问某个网站,他们首先连接到提供商的路由器,然后连接到网站本身。如果国家想封锁这个网站,他们会要求提供商封锁其 IP 地址的访问。
为了绕过这种限制,使用了代理。在这种情况下,在提供商和网站之间形成一个“中间人”——代理服务器。连接仍然通过提供商,但提供商只知道请求正在发送到代理。因此,与网站的连接不受限制,流量返回到用户的设备。但这里存在几个问题,例如:
- 网站和提供商可以检测到您正在使用绕过工具。
- 连接不安全。但是,您可以使用加密代理或 VPN,它们通常会加密流量。
Shadowsocks 旨在解决这些问题。Shadowsocks 通过类似 SOCKS5 的隧道加密 TCP/UDP 有效负载。为了真正模拟 HTTPS 或 HTTP 标头,需要一个额外的混淆插件(例如 simple-obfs、cloak)。它加密数据并将其呈现为常规 HTML 流量。该协议基于 SOCKS5,我们的博客中有一篇关于它的文章。它通过 AEAD 算法帮助保护连接。
AEAD 使用与 SSH 隧道相同的原理,但在 AEAD 的情况下,加密数据还包括有关源和接收者的信息。这使黑客的生活复杂化。即使他们截获消息,也无法篡改数据传输。
Shadowsocks 安全吗?
Shadowsocks 对于基本的审查绕过是安全的,并且与 VPN 相比通常更快/更轻量。但是,当您需要保证匿名性、抗 DPI 能力或企业级安全性时,它不能替代经过全面审计的 VPN。Shadowsocks 通常被认为是用于审查规避的安全工具,但在强大的安全性和抗检测方面存在重要限制。
一般来说,AEAD(“带有关联数据的认证加密”)模式,例如 AES-GCM 和 ChaCha20-Poly1305,是行业标准,通常被认为是高度安全的。没有普遍共识认为 AEAD 本身“不那么安全”。但根据 Stack Exchange 上的讨论,AEAD 密码被认为不那么安全。无论如何,它们足以实现可靠的连接和数据保护。
Shadowsocks 加密方法
Shadowsocks 使用 带有关联数据的认证加密 (AEAD) 作为其主要加密方法,它在单个操作中提供机密性、完整性和真实性。支持的最常见的 AEAD 密码是:
ChaCha20-Poly1305
AES-128-GCM
AES-256-GCM
Shadowsocks 协议概述。Shadowsocks 如何工作
Shadowsocks 的工作原理:对于 SS 程序,它像一个普通的 SOCKS5 一样组织,只是 IP 地址是 127.0.0.1。这个 IP 称为 Localhost,连接是本地进行的。也就是说,任何程序,例如浏览器,都连接到它正在运行的同一设备。然后,在本地 Shadowsocks 组件和服务器之间建立连接,在此捆绑中,流量已经加密。
您可以从 关于绕过中国长城防火墙的视频 中了解更多详细信息。
您可以将其他应用程序连接到 Shadowsocks,代理将仅适用于选定的应用程序。如果其中一个不支持代理,您可以使用,例如,Proxifier。

要安装和配置 Shadowsocks,您需要对连接有一定的了解。您需要从以下几点开始:
- 在所需内容未被封锁的国家/地区购买并配置 VPS 服务器,或使用现成的代理服务器,这些代理服务器可以在 Shadowsocks 代理网站上找到。
- 客户端-服务器。Google Play 上有移动应用程序 ,PC 程序可以 在 Windows 上下载,在 Linux 上下载。

然后,只需安装并启动客户端,然后配置与服务器的连接:添加服务器的 IP 地址、端口、密码和加密方法。
Shadowsocks 提供三种连接模式。
- 直接连接模式不会通过代理服务器重定向您的流量。此模式下,某些应用程序的预配置设置有效。
- PAC 模式:访问被封锁的网站时,流量将通过代理服务器。
- 在全球模式下,所有流量都通过代理服务器重定向。
Shadowsocks 可以模拟与远程服务器的 HTTPS 连接。这对于流量伪装是必要的。在这种情况下,提供商将不会理解用户正在查看什么以及正在绕过哪些封锁。这种技巧在服务器上安装 simple-obfs 流量混淆插件后才能实现。
混淆是流量的伪装和混淆。借助它,您可以保护它免受检测:提供商将无法发现您正在使用 Shadowsocks。通常,这是通过加密代码、将变量重命名为无意义的名称、添加不必要的代码或简单地使用 Cloak、Stunnel、OpenVPN Scramble 等解决方案来实现的。
尽管进行了混淆,但中国人设法通过被动流量分析和主动“探测”来跟踪 Shadowsocks 的运行,然后阻止连接。首先,防火墙会寻找可能的 Shadowsocks 连接;在第二阶段,它会从自己的 IP 地址连接到参与这些连接的服务器,就像它是一个 Shadowsocks 客户端一样,并观察服务器的响应。
您可以在 GitHub 上阅读解决该问题的详细信息和机制,但无论如何,Shadowsocks 仍然比 VPN 效果更好。
优点
1) 选择性流量伪装。您可以指定哪些流量通过提供商发送,哪些通过 Shadowsocks 发送。这将有助于绕过封锁并同时保持对某些服务的访问。
示例:Instagram 等网站和国家在线服务同时运行。前者可能在您的国家/地区无法访问,而后者只能使用本地 IP 地址。如果您使用 VPN,您可以浏览 Instagram,但无法访问本地服务。但是,某些 VPN 支持单独的隧道。使用 Shadowsocks,您可以解决此问题:您可以伪装 Instagram 流量并同时使用其他服务。
2) 防止 DPI。DPI 是一种用于监控特定应用程序工作的流量检查技术。Shadowsocks 很难被检测和阻止,因为它模拟了常规的 HTTPS 连接。因此,提供商无法检测到“非标准”用户行为。尽管如此,Shadowsocks 容易受到主动探测和模式分析检测。与更高级的可插拔传输(例如 Obfs4)不同,它可能并且已经被复杂的防火墙识别和阻止。
3) 可靠性。即使连接失败,如果连接仅通过 Shadowsocks 配置,Shadowsocks 也不会中断。如果与 VPN 服务器的连接丢失,流量将直接传输,提供商将看到所有信息。KillSwitch 部分解决了这个问题:紧急按钮会断开互联网连接。但有时它不起作用或没有此功能。
4) 良好的带宽。正确配置后,Shadowsocks 比其他加密方法(例如 SSH 隧道和 VPN)工作得更快。大约速度损失不超过 3-5%。
5) 普遍性。有适用于任何操作系统的客户端程序——Windows、MacOS、Linux(各种发行版)、Android 和 iOS。
6) 减少加密过程中的计算负载。从客户端的角度来看,这节省了电池电量(与移动设备相关),从服务器的角度来看,它节省了 Shadowsocks 的 VPS/VDS 托管费用。
7) 节省成本。最便宜的 VPS 服务器适用于 Shadowsocks。理想情况下,如果托管提供商提供使用 VPS/VDS 的无限流量。这比付费 VPN 服务更具成本效益。您也可以使用其他人的代理,但 WannaFlix、12VPN 的选项比您自己的服务器贵得多,每月约 10 美元。
相比之下:您可以租用一个拥有 5 GB 内存、0.5 GB RAM 和无限流量的 VPS,价格为 0.87 美元。这对于 Shadowsocks 来说已经足够了。最便宜的 VPN 服务通常每月约 2 美元,贵一倍,而且您需要预付 2-3 年的订阅费。不考虑免费 VPN——它们传输数据,限制速度和流量。
缺点
1) 使用复杂性。您需要了解 PC 和连接的工作原理,但配置只需 5 行。VPN 要简单得多。
2) 连接速度降低的风险。根据使用的混淆器,Shadowsocks 有可能显著降低互联网速度。
3) 有限的可用性。Shadowsocks 可以尝试更改 Netflix 的区域,但这种方案不会持续很长时间:该服务会监控不同的绕过系统。对于洪流文件来说,这也不是一个明智的解决方案:如果您租用服务器,很容易查出您的姓名和卡号,然后指控您侵犯版权。
4) 有限的可用性。尽管 Shadowsocks 很受欢迎,但在某些地区很难购买或连接到可靠的 VPS 服务器。
5) 没有官方审计。许多专家研究了 Shadowsocks 的开源代码。但它没有像 OpenVPN 那样经过官方审计。官方审计本可以由 OSTIF(开源技术改进基金)进行,该基金正是为了增强类似项目的保护而创建的。同时,Shadowsocks 的代码相当简单,这增加了分发假冒软件包的风险。
Shadowsocks 与 WireGuard
什么是 WireGuard?
WireGuard 是一种现代 VPN(虚拟专用网络)工具,有助于保护您的互联网连接。可以将其视为您的设备(如笔记本电脑或手机)与互联网之间的私人隧道。您发送或接收的任何内容都通过此隧道传输,因此公共 Wi-Fi 上的黑客或窥探者无法看到您正在做什么。它的设计宗旨是:
快速: 与传统 VPN 相比,减速最小。
简单: 只需安装,添加“服务器”或“对等点”,然后拨动开关即可连接。
安全: 使用最新的加密技术来保护您的数据安全。
当您使用公共 Wi-Fi、希望看起来像是从另一个国家/地区浏览,或者只是希望保持在线活动私密时,您可能会使用 WireGuard。
WireGuard 加密套件
- 密钥交换:Curve25519
- 加密和认证:ChaCha20-Poly1305 AEAD
- 哈希:BLAKE2s 用于数据完整性和 HMAC
WireGuard 架构
- 每个接口一个 UDP 端口,最大限度地减少攻击面并简化防火墙遍历。
- 使用临时密钥的无状态握手:对等点每 120 秒(默认)派生新的会话密钥,而无需维护连接状态。
Shadowsocks 与 WireGuard 的区别
如果您需要一个快速、按应用程序的解决方案来绕过审查(例如解除对网站或流媒体服务的封锁),而无需触及系统 VPN 设置,那么 Shadowsocks 是理想选择。WireGuard 更适合全设备保护、安全的站点到站点隧道,或者当您需要一个健壮、经过审计的 VPN,且在整个网络堆栈中具有最小延迟和强大加密保证时。
功能 | Shadowsocks | WireGuard |
---|---|---|
类型 | 加密的 SOCKS5 代理 | 第三层 VPN 隧道 |
主要用例 | 审查规避和按应用程序代理 | 站点到站点或全设备 VPN |
协议层 | 应用层 | 网络 (IP) 层 |
加密 | AEAD 密码(例如 ChaCha20-Poly1305、AES-GCM) | Noise 协议框架(ChaCha20-Poly1305、Curve25519、BLAKE2s) |
认证 | 共享密钥;无内置密钥交换 | 带内置密钥交换的公钥加密 |
性能 | 轻量级,用户空间;适度开销 | 极快,内核(或优化)实现 |
检测抵抗 | 除非混淆,否则可被 DPI 指纹识别 | 静态 UDP 端口/协议;可被阻止但比通用 VPN 更难进行 DPI 指纹识别 |
设置与部署 | 简单:安装客户端,指向代理服务器 | 需要内核模块或支持的客户端、root 权限和路由配置 |
路由范围 | 按应用程序(浏览器、特定应用程序) | 整个网络堆栈(所有流量) |
分流 | 原生:只有配置的应用程序通过代理 | 需要明确的路由规则;全部或定义的 IP 范围 |
DNS 处理 | 使用客户端的 DNS 解析器 | 每个接口可配置的 DNS 设置 |
Shadowsocks 与 OpenVPN
什么是 OpenVPN?
OpenVPN 是一种流行且受信任的 VPN(虚拟专用网络)技术,可在您的设备和互联网上的另一个网络之间创建安全加密连接(通常称为“隧道”)。此隧道可保护您的数据免受窃听,让您私密浏览,并可让您看起来像是从不同位置访问互联网。OpenVPN 是一种开源 VPN 协议和软件,它使用 SSL/TLS 进行密钥交换,实现安全的点对点或站点到站点连接。
人们使用 OpenVPN 来:
在公共 Wi-Fi 上保护他们的隐私
访问区域限制内容
远程安全连接到他们的工作场所网络
OpenVPN 加密: 支持强大的加密算法,如 AES(高级加密标准),用于数据机密性。
OpenVPN 认证: 使用 X.509 证书进行相互认证,并可选择使用用户名/密码和预共享密钥。
OpenVPN 传输协议: 通过 UDP 或 TCP 运行,为不同的网络环境和防火墙遍历提供灵活性。
OpenVPN 隧道: 在网络层(第 3 层)工作,创建虚拟网络接口 (TUN) 或桥接以太网帧 (TAP)。
Shadowsocks 与 OpenVPN 的区别
Shadowsocks 非常适合轻量级、特定于应用程序的审查规避,且延迟最小,尤其是在限制性环境中。OpenVPN 是一种健壮、经过良好审计的 VPN 解决方案,用于全设备或网络隧道,提供更强的安全性和更广泛的用例,但设置复杂性更高,资源使用也更多。
Shadowsocks | VPN | |
---|---|---|
加密 | 与大多数 VPN 相比,加密较弱 | 仅在您的设备和服务器之间进行更可靠的加密 |
内容访问 | 绕过互联网审查并提供对被封锁内容的访问 | 也绕过审查,但更容易被检测到 |
性能 | 由于加密较少且到目标点的路径较短,速度更快 | 由于加密和到 VPN 服务器的额外距离,速度较慢 |
配置复杂性 | 对于普通用户来说,配置和使用更困难 | 相对容易配置和使用 |
成本 | 低成本甚至免费选项 | 更昂贵,特别是对于高质量服务 |
用例 | 用于绕过复杂的防火墙(例如在中国)和访问被封锁的内容 | 适用于关心隐私和访问被封锁内容的用户 |
Shadowsocks 与 ShadowsocksR
什么是 ShadowsocksR (SSR)
目前,Shadowsocks 有一个社区和 自己的网站。因此,爱好者可以基于它创建自己的解决方案。例如,在 Shadowsocks 于 2015 年关闭后,另一位开发者 breakwa11 声称 SS 很容易被检测到。他基于 Shadowsocks 创建了 ShadowsocksR,支持流量混淆。因此,ShadowsocksR 是原始协议的一个分支,用 Python 编写,具有流量混淆和抗检测能力。
但更常见的是,用户建议使用基于 Rust 的当前版本 Shadowsocks-Rust。
关于 ShadowsocksR 的要点:
增强混淆: SSR 添加了高级流量混淆方法来伪装代理流量,使其更难被深度包检测 (DPI) 系统(如中国的长城防火墙)检测和阻止连接。
多种协议和混淆选项: 与 Shadowsocks 相比,Shadowsocks 使用相对简单的 SOCKS5 代理和加密,而 SSR 支持各种协议和混淆插件,可以修改数据包头、随机化流量模式并规避常见的过滤技术。
向后兼容性: SSR 大部分与 Shadowsocks 客户端兼容,但需要自己的客户端或兼容软件才能实现完整功能。
非官方维护: SSR 是一个社区项目,有多个版本独立维护;它不属于官方 Shadowsocks 存储库。
有争议: 一些隐私倡导者质疑 SSR 的安全性和维护状态,建议使用官方 Shadowsocks 或更现代的工具(如 V2Ray)来获得更强大、经过审计的代理解决方案。
总而言之,ShadowsocksR 的开发是为了使 Shadowsocks 流量更难被检测和阻止,但如今其使用范围或官方支持不如原始 Shadowsocks 广泛。
Shadowsocks 与 SOCKS5
Shadowsocks 基于 SOCKS5 协议工作。简单来说,它就像您最喜欢的应用程序在 iOS 上运行一样。Shadowsocks 为 SOCKS5 增加了更多安全性。
以下是 Shadowsocks 和 SOCKS5 之间的区别:
方面 | SOCKS5 代理 | Shadowsocks |
---|---|---|
定义 | 一种通用代理协议,在 TCP 层路由客户端和服务器之间的网络数据包。 | 一种基于 SOCKS5 的加密代理协议,增加了强大的加密和混淆功能。 |
加密 | 默认不加密;纯 TCP 转发 | 使用 AEAD 加密(例如 ChaCha20-Poly1305),保护传输中的数据。 |
目的 | 用于绕过 IP 封锁或路由流量的简单代理 | 旨在规避审查,并注重隐私和安全。 |
检测风险 | 高——流量未加密且易于检测 | 低——加密流量,并可通过混淆插件规避深度包检测 (DPI)。 |
设置复杂性 | 简单;许多客户端都支持 | 需要特殊的 Shadowsocks 客户端或兼容软件。 |
用例 | 基本代理,访问被封锁的 IP | 安全绕过互联网审查并保护数据隐私。 |
Shadowsocks 与 UDP over TCP
什么是 UDP over TCP?
UDP over TCP 是指将 UDP 流量(无连接,用于游戏、VoIP、DNS 等)封装在 TCP 连接中(面向连接且可靠)。VPN 或代理有时会这样做,因为它们只支持 TCP 来传输 UDP 数据包。这会导致额外的延迟、抖动和性能损失,因为 TCP 的重传和排序与 UDP 的低延迟设计不符。但它有时会有帮助,因为某些网络或防火墙会阻止 UDP 流量或只允许 TCP。
UDP over TCP 与 Shadowsocks 的主要区别
功能 | UDP over TCP | Shadowsocks |
---|---|---|
流量类型 | 封装在 TCP 流中的 UDP 数据包 | 原生支持 TCP 和 UDP 流量 |
性能 | 由于 TCP 重传,可能导致延迟、数据包延迟和抖动 | 通过原生 UDP 支持,优化以实现最小延迟 |
用例 | 当 UDP 被阻止或不受支持时使用 | 专为审查规避和安全代理而设计 |
检测抵抗 | 取决于底层 TCP 隧道;通常可检测 | 加密和混淆,更难检测 |
协议复杂性 | 简单的隧道方法 | 完整的加密代理协议,带有握手和加密 |
VPN 与 Shadowsocks
VPN 和 Shadowsocks 是不同的工具。前者是虚拟专用网络,我们在博客中写过,后者是代理协议。从技术上讲,它们都:
- 加密流量
- 帮助绕过封锁
但 Shadowsocks 采用更简单的加密,并且不允许在互联网上实现匿名性。该项目最初开发的目的与其说是为了安全,不如说是为了绕过中国的防火墙。然而,这个问题在 ShadowsocksR 中得到了部分解决,我们将在文章末尾讨论。VPN 通常使用复杂的 AES-256 算法。
VPN 服务通常有许多附加功能。例如,KillSwitch。VPN 是一个“隧道”,所以如果它停止工作,流量将直接传输。在这种情况下,很容易泄露真实的 IP 地址。KillSwitch 可以防止这种情况:如果与 VPN 服务器的连接丢失,它会立即切断互联网连接。
最后,VPN 拥有庞大的服务器网络。您可以从不同国家访问互联网——每次 IP 地址都会更改为所选服务器的国家/地区。
结论:VPN 更方便、更安全、更简单。如果您可以使用它并且它满足您的需求,请使用它。如果存在困难,那么 Shadowsocks 应该可以解决问题:它在 VPN 被封锁且限制难以绕过的国家/地区效果更好。使用它,数据看起来类似于 HTTPS 流量,不会引起怀疑。使用多个 TCP 连接有助于实现高速。对于简单的绕过封锁来说,它更具成本效益。
Shadowsocks 与 VPN 的主要区别
Shadowsocks | VPN 瑞典 | |
---|---|---|
加密 | 与大多数 VPN 相比,加密较弱 | 仅在您的设备和服务器之间进行更可靠的加密 |
内容访问 | 绕过互联网审查并提供对被封锁内容的访问 | 也绕过审查,但更容易被检测到 |
性能 | 由于加密较少且到目标点的路径较短,速度更快 | 由于加密和到 VPN 服务器的额外距离,速度较慢 |
配置复杂性 | 对于普通用户来说,配置和使用更困难 | 相对容易配置和使用 |
成本 | 低成本甚至免费选项 | 更昂贵,特别是对于高质量服务 |
用例 | 用于绕过复杂的防火墙(例如在中国)和访问被封锁的内容 | 适用于关心隐私和访问被封锁内容的用户 |
Shadowsocks 与移动代理
什么是移动代理?
移动代理是蜂窝运营商通过配备专用 SIM 卡的设备提供的实际移动网络 IP,提供高度可信、动态且特定于位置的 IP 地址,这些地址更难被检测或阻止。
移动代理与 Shadowsocks 的比较表
方面 | Shadowsocks | 移动代理 |
---|---|---|
它是什么 | 一种加密代理协议(基于 SOCKS5),旨在通过加密和转发流量通过远程服务器来绕过审查 | 在真实移动设备或 SIM 卡上运行的实际代理,使用蜂窝网络 (LTE/4G/5G) 路由流量 |
技术 | 基于软件的加密代理,在 VPS 或服务器上运行 | 与移动运营商绑定的基于硬件的代理,使用蜂窝运营商分配的真实移动 IP 地址 |
IP 地址类型 | 通常是数据中心 IP,很容易被标记或阻止 | 真实的移动运营商 IP,高度可信和动态,与特定地理位置绑定 |
检测风险 | 中等——除非应用混淆,否则可能被深度包检测检测到 | 低——流量显示为合法的移动网络使用,更难被阻止或标记 |
性能 | 取决于服务器位置和网络;通常很快但有所不同 | 通常在稳定的 LTE/4G/5G 连接下速度很快;IP 自然轮换 |
用例 | 审查规避、隐私保护、解除网站和服务封锁 | |
设置 | 需要安装客户端软件并配置代理设置 | 通常通过市场或 API 访问;无需客户端软件,只需代理凭据 |
匿名级别 | 良好的加密,但 IP 可能来自数据中心范围 | 高度可信和匿名,因为 IP 属于移动运营商并动态轮换 |
我应该使用 Shadowsocks 还是移动代理?
用于审查规避和加密代理——Shadowsocks
对于真实的移动 IP、受信任的基于位置的访问和低检测风险,移动代理更优越——特别是对于商业和自动化用例。
结论
Shadowsocks 是一种经济实惠且方便的绕过封锁工具。它也可能有助于保护连接。当然,它包含的功能比 VPN 服务少,但速度稍快。然而,对于解决简单任务,例如恢复对被封锁网站的访问,它是最佳选择。它易于使用和配置:互联网上有很多关于如何操作的说明。
在 OnlineProxy 中,您将找到来自世界各地的移动代理,每日资费从 0.7 $ 起,并且 IP 轮换。代理非常适合工作任务。我们保证质量,否则退款。