Назад | Перейти на главную страницу

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

Я растущий поклонник мош и я все чаще использую его, когда у меня ненадежные соединения Wi-Fi. Я пытаюсь понять, как построить туннель через сервер, который находится в 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 от начала до конца. Я предполагаю, что мне придется настроить server-in-dmz для прослушивания mosh-сервера. Но на странице руководства mosh-server указано: «Он выйдет, если ни один клиент не связался с ним в течение 60 секунд».

Короче говоря, возникает вопрос: как построить mosh-туннель с несколькими хостами?

Вы можете попробовать камень, который является повторителем пакетов TCP и UDP. По сути, это означает, что у вас может быть следующая конфигурация:

Вы <---> Stone on server-in-dmz <---> server-behind-firewall

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

Вам нужно будет подключиться к mosh с помощью следующей команды:

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

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

Затем вы подключаетесь с помощью mosh -p 60159 --ssh='ssh -p 11559' server-in-dmz

Примечание:

  • Кажется, нет способа поместить mosh-порт в файлы конфигурации. :(
  • Выбрал порты наугад.
  • Вам может понадобиться дополнительная конфигурация iptables, если вы сделаете это ...
  • Редактировать: Лучше использовать DNAT для всего диапазона портов, поскольку велика вероятность того, что вы случайно убьете mosh-клиент, не забрав с собой сервер. Если вы не пересылаете диапазон, вам придется отправить ssh на свой сервер и убить работающий mosh-сервер. Может немного раздражать, если у вас вообще плохое соединение.
  • В моем случае это мош через йод.