如何建立隧道

How to set up a tunnel

为了绕过我所在国家/地区的过滤,我租用了一台配备 256 MB RAM 的国外服务器 (CentOS 5)。客户端是 Ubuntu 12.04。我 运行 在客户端中使用此命令来设置隧道:

ssh -CNfD 1080 <user>@<server-ip>

在 Firefox 设置中,我定义了一个 socks 代理服务器:

localhost:1080

通过使用这种方法,一切正常,我可以绕过限制。但是,速度会合理降低。我不知道为什么。我猜想有一些原因,我想和你分享并发表你的意见:

  1. 如果我使用直接连接,大多数站点都使用http,但是当我使用代理时,所有站点都必须使用ssh 准备的安全连接。我的提供商可能降低了安全连接的速度。 (我认为这可能是问题所在,但似乎不使用代理的 https 站点仍然打开得更快。)

  2. 这种隧道本质上会导致互联网速度下降。可能是因为适用于安全数据包的开销或其他一些原因。如果是这样,我可以替换什么?我有一个可用的专用服务器。

PS。服务器互联网连接速度远高于客户端和服务器之间的速度(带宽)。

PPS。我可以设置一个 http 隧道吗?或者使用一些软件而不是 ssh 来更快并且开销更少或者不使用 https?

请帮我弄清楚到底发生了什么,因为我对这些概念不太熟悉。

恐怕你能做的不多...

确实,当您通过加密隧道传输有效负载数据时,速度、延迟和吞吐量会降低,这是意料之中的事情。原因主要是加密的开销,还取决于手头的连接,修改的(更长的)路由。您必须考虑到大部分加密必须由您的隧道端点完成,因此在这种情况下是您的服务器。如果该系统缺乏计算能力,那么结果显然会降低吞吐量。 CDN 之类的东西也将不再有效。

很可能是您的服务提供商限制了不同类型的连接。特别是在对通信内容具有高度控制和审查的地区,当局显然不喜欢加密有效载荷,因此可以控制和过滤有效载荷。阻止人们使用加密的一切都符合他们的利益。因此,只有从他们的角度来看,限制加密通信才有意义。悲伤,但无论如何都是真实的。

唯一可能产生影响的是有关您的隧道端点的一些详细信息,在这种情况下也就是您的服务器。增加的计算能力可以减少瓶颈 if 系统显示加密导致的高负载。

它的网络连接也很有趣,就像您的本地连接一样:与未加密的流量相比,加密隧道在 上传 端需要更多的控制数据。由于上传带宽通常比下载带宽低得多,因此 可能 也是一个问题。