Gibt es Nachteile beim SSH-Tunneling?

11

Ich habe kürzlich einen VPS "gekauft", den ich als Proxy verwenden möchte, um einige Websites und Dinge verwenden zu können, die ich aus Deutschland nicht erreichen kann.

Da ich noch zu faul war, um Squid und OpenVPN einzurichten (was ich derzeit für nötig halte), verwende ich SSH-Tunneling.

Jetzt, nach ein paar Wochen, fragte ich mich, ob SSH-Tunneling nicht in Ordnung sei oder - und das ist meine Frage - ob es irgendwelche Vorbehalte / Kontras / Nachteile gibt, die ich beachten muss?

Nils Riedemann
quelle
1
Für das, was es wert ist, ist OpenVPN extrem einfach mit einem statischen Schlüssel einzurichten, wenn Sie von Linux zu Linux wechseln. Es ist etwas schwieriger, wenn einer Ihrer Computer Windows ist, aber machbar. bit.ly/ujkD2
Transistor1

Antworten:

10

Das Leistungsproblem tritt auf, wenn Sie TCP über TCP tunneln, da zwei Ebenen adaptive Korrekturen durchführen (langsamer Start, Vermeidung von Überlastungen, schnelle erneute Übertragung, siehe RFC2001 ).

Wenn sie sich nicht bewusst sind, werden sie große Schwierigkeiten haben, wenn Sie einen Verlust an der äußeren Verbindung haben.

Diese Seite beschreibt das Phänomen im Detail.

bearbeiten:

Anstatt beim TCP-über-TCP-Problem zu bleiben, schauen Sie sich sshuttle an, das es verhindert. Weitere Informationen zu dieser Situation finden Sie
im Abschnitt " Betriebstheorie ".

Shadok
quelle
Weiß die innere Schicht nicht, dass sie mit der Loopback-Schnittstelle spricht?
Random832
In Bezug auf Ihre Frage besteht das Problem darin, dass TCP das Deaktivieren dieser "Optimierungen" nicht unterstützt, selbst wenn es sich seiner inneren Position als innerer Stream irgendwie bewusst ist und nichts tun kann. Das Problem hierbei ist, dass das äußere adaptive Verhalten das innere stört, das versucht, sich anzupassen, indem es beispielsweise die erneute Übertragung verlangsamt, obwohl sich der äußere TCP-Stream bereits daran anpasst.
Shadok
Ich habe über den Fall nachgedacht, dass es sich um eine normale getunnelte TCP-Verbindung handelt, nicht um "TCP über IP über PPP über TCP" - in diesem Fall gibt es eigentlich keinen zweiten TCP-Protokollstapel - ssh leitet nur einen Bytestream weiter. Und ich meinte nicht "sich seiner Position als innerer Stream bewusst sein", sondern meinte, wie es in dieser Situation eine Loopback-Schnittstelle (der lokale Port, den SSH abhört) als Ziel haben würde.
Random832
OP sprach von "einigen Sites". Ich nahm an, dass er HTTP über SocksV5 über SSH ausführt, was bedeutet, dass er TCP über TCP ausführt (SSH selbst ist TCP und das HTTP im Tunnel fließt über andere TCP-Streams, die in SSH gekapselt sind).
Shadok
1
@ Shadok Ich bin mir ziemlich sicher, dass deine Schlussfolgerungen nicht wahr sind. apenwarr bezog sich auf das tun/tapTunneln, was zu tcp-over-tcp führt. SOCKSv5 leidet nicht unter denselben Problemen, funktioniert jedoch nicht mit allen Anwendungen transparent (während tun / tap nur eine weitere Netzwerkschnittstelle ist, sodass es transparent gehandhabt werden kann).
JPC
3

Eine Sache, an die ich denken kann, ist Leistung. Aber das hängt wirklich davon ab, welche Art von Sachen Sie tunneln.

Marcus
quelle
Welche Art von Leistung? Bandbreite? Ich benutze es derzeit, um auf Hulu und einige YouTube-Videos zuzugreifen, die blockiert sind.
Nils Riedemann
CPU-Overhead (Verschlüsselung) und möglicherweise Latenz, höchstwahrscheinlich.
XTL
1

Normalerweise habe ich festgestellt, dass die Latenz zunimmt, aber der Durchsatz beim SSH-Tunneling in Ordnung (90%) des Normalwerts ist. Stellen Sie sicher, dass die Einstellung ServerAliveIntervalgetrennt ist, und trennen Sie sie in ein Skript, um den Tunnel bei einem Fehler weiterhin neu zu starten.

Der Hauptnachteil ist, dass es sich um einen Pro-TCP-Port-Tunnel handelt, sofern Sie nicht SOCKS verwenden. SOCKS ist in Ordnung, aber die Latenz scheint damit noch weiter zuzunehmen, und natürlich unterstützt nicht jeder Client SOCKS.

Möglicherweise müssen Sie GatewayPortsauf dem Client oder SSH-Server ausgeführt werden, damit andere Benutzer eine Verbindung über Ihren Tunnel herstellen können. Auf dem Server erfordert dies Root-Zugriff auf die sshd_config.

Die wichtigste Leistungsbeschränkung (wie andere bemerken) ist, dass unzuverlässige Verbindungen bei diesem Ansatz wahrscheinlich nicht gut abschneiden, da die TCP-Algorithmen bei der Kapselung nicht gut reagieren.

Trotzdem scheint SSH die meiste Zeit "das Richtige zu tun".

Stu Charlton
quelle
1
Das Problem mit unzuverlässigen Verbindungen, das Sie beobachten, hängt wahrscheinlich mit der erhöhten Latenz und den Handshakes zusammen, die wiederholt werden müssen, wenn Verbindungen unterbrochen werden. Die SSH-Portweiterleitung führt keine TCP-über-TCP-Kapselung durch.
JPC