通过代理mosh隧道

我是一个越来越多的粉丝,越来越多的使用它,当我有不可靠的WiFi链接。 我想弄清楚的是如何通过DMZ中的服务器(连接到互联网和防火墙networking)build立隧道

我现在用ssh的解决scheme是编辑.ssh / config来包含如下行:

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

我也想出了如何使用ssh来做一条腿,

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

在server-in-dmz和server-behind-firewall之间,我使用屏幕搭build了一个mosh会话。

但是我真的只想从端到端地使用mosh。 我猜想,我不得不装备服务器在dmz有一个mosh服务器聆听。 但是mosh-server的手册页上写着“如果没有客户在60秒内联系过它,它将退出”。

总之,问题是:如何build立与多个主机的mosh隧道?

    你可能想试试stone ,这是一个TCP和UDP数据包转发器。 这基本上意味着你可能有以下configuration:

    你<—>在server-in-dmz <—> server-behind-firewall上的石头

    换句话说,server-in-dmz监听端口X上的SSH数据包将被转发到server-behind-firewall,而另一个端口Y端口则转发到server-behind-firewall上的端口60000狂舞的服务器。

    您必须使用以下命令连接到mosh:

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

    您可以使用iptables(在server-in-dmz上),而不是按照@Hengjie的build议在应用层上转发stream量:

     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 -p 60159 --ssh='ssh -p 11559' server-in-dmz

    注意:

    • 似乎没有办法将mosh-port放入configuration文件中。 🙁
    • 我随机挑选了这些端口。
    • 你可能需要一些额外的iptablesconfiguration,如果你这样做…
    • 编辑: DNAT更好的方式是整个端口范围内,因为你不小心杀死了mosh客户端,而不需要服务器。 如果你不转发一个范围,你必须ssh到你的服务器,并杀死正在运行的mosh服务器。 如果你有一个不好的连接,可以稍微恼人。
    • 我的这个用例是通过碘来慢吞吞的。