mosh тунель через проксі


16

Я все більш прихильник моша і все частіше використовую його, коли маю ненадійні посилання на wifi. Я намагаюся з’ясувати, як побудувати тунель через сервер, який знаходиться в DMZ (підключений до Інтернету та мережі з підключеним каналом).

Моє поточне рішення з ssh полягає в редагуванні .ssh / config для включення рядків типу:

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

Я також з'ясував, як я можу використовувати ssh для того, щоб зробити одну ногу, а іншу намацати:

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

Між сервером-в-dmz та сервером-за-брандмауером у мене встановлено сеанс mosh за допомогою екрана.

Але те, що я дуже хотів би просто використовувати mosh від кінця до кінця. Я б здогадувався, що мені доведеться встановити сервер в dmz, щоб прослухати mosh-сервер. Але головна сторінка mosh-сервера говорить: "Він закриється, якщо жоден клієнт не зв’язався з ним протягом 60 секунд".

Коротше кажучи, питання: як побудувати мош-тунель з кількома хостами?


Відповіді:


5

Ви можете спробувати камінь , який є ретранслятором пакетів TCP та UDP. Це по суті означає, що у вас може бути така конфігурація:

Ви <---> Стоун на сервері in-dmz <---> сервер позаду брандмауера

Для того, щоб сказати слова, потрібно прослуховувати сервер в дмз на порт X для пакетів SSH, які будуть перенаправлені на сервер позаду брандмауера, а також на інший порт, порт Y, для пересилання пакетів UDP на порт 60000 на сервер позаду брандмауера для mosh-сервер.

Вам доведеться підключитися до mosh за допомогою наступної команди:

mosh -p 60000 --ssh='ssh -p PORT_X' server-in-dmz

3
Одне цікаве, що слід зазначити, що використання програм перехоплювачів tcp, таких як tsocks або proxychains, не вийде. Це тому, що вони перехоплюють лише пакети TCP, а не UDP (для чого використовується mosh).
Хенджіе

як я можу використовувати камінь з однією ipv4 та однією ipv6 адресою?
Янус Троельсен

0

Замість того, щоб перенаправляти трафік на рівні додатків, як це запропонував @Hengjie, ви також можете використовувати iptables (на сервері в 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

Потім ви підключаєтесь за допомогою mosh -p 60159 --ssh='ssh -p 11559' server-in-dmz

Примітка:

  • Здається, не існує способу ввести mosh-порт у конфігураційні файли. :(
  • Я вибрав порти навмання.
  • Якщо ви зробите це, вам може знадобитися додаткова конфігурація iptables…
  • Редагувати: краще DNAT весь діапазон портів, оскільки є хороший шанс, що ви випадково вб'єте клієнт mosh, не беручи з собою сервер. Якщо ви не переадресуєте діапазон, вам доведеться ssh на свій сервер і вбити запущений сервер mosh. Може трохи дратувати, якщо у вас в першу чергу поганий зв’язок.
  • Мій приклад для цього - сміття через йод.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.