tunel mosh przez proxy

16

Jestem coraz fanem Mosh i jestem coraz częściej używają go, gdy mam zawodne łącza WiFi. Próbuję dowiedzieć się, jak zbudować tunel za pośrednictwem serwera znajdującego się w strefie DMZ (podłączonej do Internetu i zapory sieciowej).

Moje obecne rozwiązanie z ssh polega na edycji .ssh / config w celu włączenia linii takich jak:

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

Wymyśliłem też, jak mogę użyć ssh do wykonania jednej nogi, a drugiej:

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

Pomiędzy server-in-dmz i server-behind-firewall mam przygotowaną sesję mosh przy użyciu screena.

Ale tak naprawdę chciałbym po prostu używać mosh od końca do końca. Domyślam się, że musiałbym skonfigurować serwer-in-dmz, aby nasłuchiwał serwer Mosh. Ale strona podręcznika mosh-server mówi: „Wyjdzie, jeśli żaden klient nie skontaktuje się z nim w ciągu 60 sekund”.

Krótko mówiąc, pytanie brzmi: jak zbudować tunel Mosh z wieloma hostami?

speciousfool
źródło
patrz github.com/marklee77/mosh-proxy
Janus Troelsen

Odpowiedzi:

5

Możesz wypróbować kamień , który jest repeaterem pakietów TCP i UDP. Zasadniczo oznacza to, że możesz mieć następującą konfigurację:

You <---> Stone na server-in-dmz <---> serwer za firewallem

Aby uporządkować słowa, serwer-in-dmz nasłuchuje na porcie X, aby pakiety SSH były przekazywane do serwera za zaporą ogniową, a także inny port, port Y, dla pakietów UDP przesyłających do portu 60000 na serwerze za zaporą ogniową dla serwer mosh.

Będziesz musiał połączyć się z mosh za pomocą następującego polecenia:

mosh -p 60000 --ssh='ssh -p PORT_X' server-in-dmz
Hengjie
źródło
3
Ciekawą rzeczą do zapamiętania jest to, że nie będą działać aplikacje przechwytujące tcp, takie jak tsocks lub proxy. Wynika to z tego, że przechwytują tylko pakiety TCP, a nie UDP (do tego używa mosh).
Hengjie
jak używać kamienia z jednym adresem ipv4 i jednym adresem ipv6?
Janus Troelsen
0

Zamiast przekierowywać ruch w warstwie aplikacji, jak sugeruje @Hengjie, możesz także użyć iptables (na serwerze-w-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

Następnie łączysz się za pomocą mosh -p 60159 --ssh='ssh -p 11559' server-in-dmz

Uwaga:

  • Wydaje się, że nie ma sposobu na umieszczenie portu mosh w plikach konfiguracyjnych. :(
  • Losowo wybrałem porty.
  • Jeśli chcesz to zrobić, możesz potrzebować dodatkowej konfiguracji iptables…
  • Edycja: Lepiej jest DNAT obsługiwać całą gamę portów, ponieważ istnieje duża szansa, że ​​przypadkowo zabijesz klienta mosh bez zabrania ze sobą serwera. Jeśli nie przekażesz zakresu, będziesz musiał ssh na swój serwer i zabić działający serwer mosh. Może być nieco irytujące, jeśli masz złe połączenie.
  • Moim przypadkiem użycia jest mosh poprzez jod.
Cezar
źródło