mosh tunnel via proxy

16

Ich bin ein wachsender Fan von Mosh und benutze es zunehmend, wenn ich unzuverlässige WiFi-Verbindungen habe. Was ich versuche herauszufinden, ist, wie man einen Tunnel durch einen Server baut, der sich in einer DMZ befindet (verbunden mit dem Internet und einem Firewall-Netzwerk).

Meine aktuelle Lösung mit ssh besteht darin, .ssh / config so zu bearbeiten , dass folgende Zeilen enthalten sind:

Host server-behind-firewall
  ProxyCommand ssh server-in-dmz nc %h %p

Ich habe auch herausgefunden, wie ich ssh verwenden kann, um ein Bein zu machen und das andere zu mischen:

ssh -t server-in-dmz mosh server-behind-firewall

Zwischen server-in-dmz und server-behind-firewall habe ich eine mosh-session mit screen aufgebaut.

Aber was möchte ich wirklich nur von Ende zu Ende mosh verwenden. Ich würde vermuten, dass ich Server-in-DMZ aufrüsten muss, damit ein Mosh-Server mithört. Aber die Manpage von mosh-server sagt: "Es wird beendet, wenn kein Client innerhalb von 60 Sekunden Kontakt mit ihm aufgenommen hat."

Kurz gesagt lautet die Frage: Wie kann ein Mosh-Tunnel mit mehreren Hosts erstellt werden?

speciousfool
quelle
siehe github.com/marklee77/mosh-proxy
Janus Troelsen

Antworten:

5

Vielleicht möchten Sie stone ausprobieren , einen TCP- und UDP-Paketrepeater. Dies bedeutet im Wesentlichen, dass Sie möglicherweise die folgende Konfiguration haben:

Sie <---> steinigen auf Server-in-DMZ <---> Server-hinter-Firewall

Lassen Sie also Server-in-DMZ Port X abhören, damit SSH-Pakete an Server-Behind-Firewall weitergeleitet werden, und einen weiteren Port, Port Y, für die UDP-Pakete, die an Port 60000 an Server-Behind-Firewall weitergeleitet werden Mosh-Server.

Sie müssen sich mit dem folgenden Befehl mit mosh verbinden:

mosh -p 60000 --ssh='ssh -p PORT_X' server-in-dmz
Hengjie
quelle
3
Interessant ist, dass die Verwendung von TCP-Interceptors-Anwendungen wie Tsocks oder Proxy-Ketten nicht funktioniert. Dies liegt daran, dass sie nur TCP-Pakete abfangen und nicht UDP (was mosh verwendet).
Hengjie
Wie verwende ich Stone mit einer IPv4- und einer IPv6-Adresse?
Janus Troelsen
0

Anstatt den Datenverkehr auf der Anwendungsebene wie von @Hengjie vorgeschlagen weiterzuleiten, können Sie auch iptables verwenden (auf server-in-dmz):

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 11559 -j DNAT --to-destination 178.254.55.220:22
iptables -t nat -A PREROUTING -p udp -m udp --dport 60159:60168 -j DNAT --to-destination 178.254.55.220
iptables -t nat -A POSTROUTING -j MASQUERADE
sysctl -w net.ipv4.ip_forward=1

Dann verbinden Sie sich mit mosh -p 60159 --ssh='ssh -p 11559' server-in-dmz

Hinweis:

  • Es scheint keine Möglichkeit zu geben, den Mosh-Port in Konfigurationsdateien zu setzen. :(
  • Ich habe die Häfen zufällig ausgewählt.
  • Vielleicht möchten Sie eine zusätzliche iptables-Konfiguration, wenn Sie dies tun ...
  • Bearbeiten: Es ist besser, eine ganze Reihe von Ports zu DNAT, da die Wahrscheinlichkeit groß ist, dass Sie den mosh-Client versehentlich beenden, ohne den Server mitzunehmen. Wenn Sie keinen Bereich weiterleiten, müssen Sie ssh an Ihren Server senden und den laufenden mosh-Server beenden. Kann etwas ärgerlich sein, wenn Sie überhaupt eine schlechte Verbindung haben.
  • Mein Anwendungsfall dafür ist Mosh durch Jod.
Caesar
quelle