mosh tunnel via proxy

16

Saya penggemar mosh yang terus bertambah dan semakin sering menggunakannya ketika saya memiliki tautan wifi yang tidak bisa diandalkan. Apa yang saya coba cari tahu adalah bagaimana membangun terowongan melalui server yang ada di DMZ (terhubung ke internet dan jaringan firewall).

Solusi saya saat ini dengan ssh adalah mengedit .ssh / config untuk memasukkan baris seperti:

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

Saya juga sudah tahu bagaimana saya bisa menggunakan ssh untuk melakukan satu kaki dan mosh yang lain:

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

Antara server-in-dmz dan server-di belakang-firewall saya memiliki sesi mosh menggunakan layar.

Tapi apa yang saya benar-benar ingin hanya menggunakan mosh dari ujung ke ujung. Saya kira saya harus memasang server-in-dmz untuk mendengarkan mosh-server. Tetapi halaman manual mosh-server mengatakan "Ini akan keluar jika tidak ada klien yang menghubunginya dalam waktu 60 detik."

Singkatnya, pertanyaannya adalah: bagaimana cara membangun mosh tunnel dengan banyak host?

speciousfool
sumber
lihat github.com/marklee77/mosh-proxy
Janus Troelsen

Jawaban:

5

Anda mungkin ingin mencoba batu , yang merupakan repeater paket TCP dan UDP. Apa artinya ini pada dasarnya adalah bahwa Anda mungkin memiliki konfigurasi berikut:

Anda <---> melempari server-in-dmz <---> server-di belakang-firewall

Secara berurutan, minta server-in-dmz mendengarkan pada port X untuk paket SSH untuk diteruskan ke server-di belakang-firewall, dan juga port lain, port Y, untuk paket-paket UDP meneruskan ke port 60000 pada server-di belakang-firewall untuk mosh-server.

Anda harus terhubung ke mosh menggunakan perintah berikut:

mosh -p 60000 --ssh='ssh -p PORT_X' server-in-dmz
Hengjie
sumber
3
Satu hal yang menarik untuk dicatat adalah bahwa menggunakan aplikasi interseptor tcp seperti tsocks atau proxychains tidak akan berfungsi. Ini karena mereka hanya memotong paket TCP dan bukan UDP (yang digunakan oleh mosh).
Hengjie
bagaimana cara menggunakan batu dengan satu alamat ipv4 dan satu alamat ipv6?
Janus Troelsen
0

Alih-alih meneruskan lalu lintas pada lapisan aplikasi, seperti yang disarankan oleh @ Hengjie, Anda juga dapat menggunakan iptables (di 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

Kemudian, Anda terhubung menggunakan mosh -p 60159 --ssh='ssh -p 11559' server-in-dmz

catatan:

  • Sepertinya tidak ada cara untuk menempatkan mosh-port ke file konfigurasi. :(
  • Saya memilih port secara acak.
  • Anda mungkin ingin beberapa konfigurasi iptables tambahan jika Anda melakukan ini ...
  • Sunting: Lebih baik DNAT seluruh jajaran port, karena ada kemungkinan besar Anda secara tidak sengaja membunuh klien mosh tanpa mengambil server dengan itu. Jika Anda tidak meneruskan rentang, Anda harus ssh ke server Anda dan membunuh server mosh yang sedang berjalan. Dapat sedikit mengganggu jika Anda memiliki koneksi yang buruk di tempat pertama.
  • Kasus penggunaan saya untuk ini adalah mosh melalui yodium.
Caesar
sumber