web-dev-qa-db-ja.com

プロキシ経由のモッシュトンネル

私は mosh のファンが増えており、信頼性の低い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

Server-in-dmzとserver-behind-firewallの間で、screenを使用してmoshセッションを作り上げました。

しかし、私がモッシュをエンドツーエンドで使用したいだけです。 mosh-serverがリッスンするようにするには、server-in-dmzをリギングする必要があると思います。しかし、mosh-serverのmanページには、「クライアントが60秒以内に接続しなかった場合は終了します」と書かれています。

つまり、問題は、複数のホストでモッシュトンネルを構築する方法ですか。

16
speciousfool

TCPおよびUDPパケットリピーターである stone を試してみることをお勧めします。これが本質的に意味することは、次の構成があることです。

あなた<---> server-in-dmz <---> server-behind-firewallの石

つまり、server-in-dmzは、SSHパケットがserver-behind-firewallに転送されるのをポートXでリッスンし、別のポート、ポートYを使用して、server-behind-firewallのポート60000に転送されるUDPパケットをmosh-server。

次のコマンドを使用してmoshに接続する必要があります。

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

@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-portを設定ファイルに入れる方法はないようです。 :(
  • 私はランダムにポートを選びました。
  • これを行う場合、追加のiptables構成が必要になる場合があります…
  • 編集:サーバーを使用せずに誤ってmoshクライアントを強制終了する可能性が高いため、ポートの全範囲をDNATすることをお勧めします。範囲を転送しない場合は、サーバーにsshして、実行中のmoshサーバーを強制終了する必要があります。そもそも接続が悪い場合は、少し煩わしいかもしれません。
  • これの私のユースケースはヨウ素を介してモッシュです。
0
Caesar