SSH隧道是否有缺点?


12

我最近“购买”了一个我想用作代理的VPS,以便能够使用某些德国无法到达的站点和东西。

由于我还懒得设置Squid和OpenVPN(目前我认为是必需的),因此我使用ssh-tunneling。

现在过了两周后,我问自己ssh隧道是否还不错,或者-这就是我的问题-我是否需要注意任何警告/缺点/缺点?


1
值得一提的是,如果您要从Linux迁移到Linux,则使用静态密钥非常容易设置OpenVPN。如果您的其中一台计算机是Windows,则比较棘手,但是可以使用。bit.ly/ujkD2
transistor1

Answers:


11

当您通过TCP隧道传输TCP时会出现性能问题,因为您需要进行两层自适应调整(慢启动,避免拥塞,快速重传,请参阅RFC2001)。

如果您在外部连接上不知所措,他们将不会互相意识到。

本页详细描述了这种现象。

编辑:

与其坚持使用TCP over TCP问题,不如通过sshuttle来阻止它。有关这种情况的更多详细信息,请参阅“ 操作理论
一节。


内层是否不知道它正在与环回接口通信?
Random832

关于您的问题,问题在于TCP不支持禁用这些“优化”,即使它作为内部流“以某种方式意识到其位置”也无法执行任何操作。这里的问题是外部自适应行为会破坏内部行为,例如,尽管外部TCP流已经在适应这种行为,但它会尝试通过减慢重传来进行自适应。
沙多克2012年

我在考虑的情况是普通的隧道TCP连接,而不是“ TCP over IP over TCP over PPP over TCP”-在这种情况下,实际上没有第二个TCP协议栈-ssh只是转发字节流。我并不是说“意识到它作为内部流的位置”,而是意味着在这种情况下它将如何将回送接口(本地端口ssh正在侦听)作为目的地。
2012年

OP谈到“某些站点”,我以为他正在通过SSH在SocksV5上执行HTTP,这意味着他正在通过TCP进行TCP(SSH本身是TCP,并且隧道内的HTTP在另一个TCP流上流动,并封装在SSH中)。
Shadok 2012年

1
@Shadok我很确定您的结论不正确。apenwarr指的是tun/tap导致tcp-over-tcp的隧道。SOCKSv5不会遇到相同的问题,但不能对所有应用程序透明地工作(而tun / tap只是另一个网络接口,因此可以透明地进行处理)。
jpc

3

我想到的一件事是性能。但这实际上取决于您正在挖掘哪种类型的东西。


什么样的表现?带宽?我目前使用它来访问hulu和一些被阻止的youtube视频。
尼尔斯·里德曼

最可能的是CPU开销(加密)和可能的延迟。
XTL 2012年

1

正常情况下,我发现延迟会增加,但是吞吐量可以达到SSH隧道正常情况的90%。确保设置ServerAliveInterval为防止断开连接,并将其包装在脚本中以在发生故障时继续重新启动隧道。

主要的缺点是,它是每个TCP端口隧道,除非您使用SOCKS。SOCKS很好,但是延迟似乎随之增加,当然,并不是每个客户端都支持SOCKS。

您可能需要GatewayPorts在客户端或SSH服务器上运行,以允许其他人通过您的隧道连接。在服务器上,这需要对sshd_config的根访问权限。

主要的性能警告(如其他人所述)是,这种方法可能无法很好地实现不可靠的连接,因为TCP的算法在封装下反应不佳。

也就是说,SSH在大多数情况下似乎都是“做正确的事”。


1
您观察到的连接不可靠的问题可能与增加的延迟和握手有关,当连接断开时需要重复进行握手。SSH端口转发不执行tcp-over-tcp封装。
jpc
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.