我目前在服务器上配置了 openVPN 和 shadowsocks(基于 socks5)。我很困惑这两者之间有什么区别,以及什么时候应该使用其中一个。
答案1
尽管它们可以执行类似的操作,但从本质上讲,OpenVPN 和 Shadowsocks 是完全不同的。
OpenVPN 是一个 VPN 服务器。Shadowsocks 是一个代理。
代理可以(可选使用加密)请求另一台计算机为您获取信息。通常,中间系统实际上正在处理数据包。这限制了可以在其上运行的程序。
VPN 会对点之间发送的数据包进行加密 - 对于 VPN,除了剥离加密并转发原始数据包之外,VPN 服务器还会修改数据包。(*VPN 服务器可能还会部署 NAT,以重写数据包的源地址或目标地址)。VPN 更加灵活。 需要构建一个应用程序来与 SOCKS 配合使用。
VPN 服务器通常(但并非总是)更容易被政府检测和阻止,因为它们通常使用自己的协议来使其更具通用性。 应用程序不需要修改就可以与 VPN 配合使用。 此外,VPN 的特性使得即使在浏览网页时也可以检测到长时间会话 - 而代理服务器会像网页一样打开和关闭连接。
因此,选择哪种协议取决于您使用的目的。如果使用一组有限的协议/程序“不引人注意”更有价值,请使用 SOCKS。如果需要协议的更大灵活性或对底层交付机制的更多控制,请使用 OpenVPN。
另一种思考方式是,VPN 在实际网络的一部分之上覆盖了接近操作系统级别的“虚拟网络”,而代理创建应用程序以加密方式相互通信,而无需虚拟化底层网络。
答案2
“Shadowsocks 基于一种称为代理的技术。代理在防火墙建立初期在中国很流行,那时它还没有真正“流行”。在这种设置下,在连接到更广泛的互联网之前,您首先要连接到一台非您自己的计算机。这台计算机称为“代理服务器”。当您使用代理时,您的所有流量都会首先通过代理服务器路由,而代理服务器可能位于任何地方。因此,即使您在中国,您在澳大利亚的代理服务器也可以自由连接到 Google、Facebook 等。
但自那以后,防火墙的威力越来越大。如今,即使您在澳大利亚有代理服务器,防火墙也能识别并阻止来自该服务器的它不喜欢的流量。它仍然知道您正在向 Google 请求数据包 — 您只是使用了一条有点奇怪的路由。这就是 Shadowsocks 的作用所在。它使用名为 SOCKS5 的开源互联网协议,在您本地计算机上的 Shadowsocks 客户端和代理服务器上运行的客户端之间建立加密连接。
这与 VPN 有何不同?VPN 也通过重新路由和加密数据来工作。但在中国,大多数使用 VPN 的人都使用少数几家大型服务提供商之一。这使得政府很容易识别这些提供商,然后阻止来自他们的流量。VPN 通常依赖于几种流行的互联网协议之一,这些协议告诉计算机如何通过网络相互通信。中国审查人员已经能够使用机器学习来找到识别使用这些协议的 VPN 流量的“指纹”。这些策略在 Shadowsocks 上效果不佳,因为它是一个不太集中的系统。