特定のポートのトラフィックを別のマシンに転送する最適な方法は何ですか?

特定のポートのトラフィックを別のマシンに転送する最適な方法は何ですか?

私の設定は次のとおりです:

[client01] <-A-> [server01] <-B-> [server02]

client01server01(接続A)のポート 9300 にアクセスできます。 (接続)のserver01ポート9300にのみアクセスできます。server02BSSH経由。 ポート上のすべてのトラフィック9300server01ポート に送信する最適な方法は何ですか?9300server02

client01からserver01への ssh トンネルでこれを正常に実行できますserver02が、 で ssh を実行する必要はありません。 からにポート 9300 (上) を転送してclient01ssh すると、機能しません。間違ったコマンドを使用しているのでしょうか?server01server02ssh -g -L9300:localhost:9300 server02server01

編集: server02 は ssh 経由でのみアクセス可能であることを追加しました

答え1

これは、iptables DNAT ルールを使用して実行できます。次のようになります。

iptables -A PREROUTING -p tcp -d x.x.x.x --dport 9300 -j DNAT --to-destination y.y.y.y:9300

を server01 の IP アドレスにx.x.x.x、を server02 のアドレスに置き換えるy.y.y.yと設定完了です。

もちろん、これはすべて、server01 で iptables を実行していることを前提としています。また、server02 がトラフィックをインターネットに戻すために server01 を使用していることも前提としています。server02 が使用していない場合、これは目的どおりには機能しません。

マシン間の SSH のみの接続を考慮して編集します。

SSH ポート転送のコマンドラインは、"L" と "9300" の間にスペースが必要であることを除いて、問題ないように見えます。また、server01 コンピュータがポート 9300 で着信接続を受け入れることを確認する必要があります。フィルタ テーブル ( iptables -L INPUT) の iptables INPUT チェーンを調べて、トラフィックが許可されることを確認してください。

そのトンネルも継続的に維持する必要があります。

関連情報