リバースSSHを使用してすべてのトラフィックを別のマシンに転送する

リバースSSHを使用してすべてのトラフィックを別のマシンに転送する

次のようなシナリオがあります

                                                                                                                  
               Local Network                     |                          Global Network                        
                                                 |                                                                
                                                 |                                                                
                                                 |                                                                
                                                 |                                                                
                                                 |                                                                
                                                 |                                                                
                                                 |                                                                
+------------+              +-----------+        |               +----------+                   +----------------+
|   client A | -----------> |  server A | <--------------------> | server B | --------------->  | Global Network |
+------------+              +-----------+        |               +----------+                   +----------------+
                                                 |                                                                
                                                 |                                                                

今後の課題:

server Aからのすべてのトラフィックを に転送しますserver B。 ではすべてのトンネル プロトコルが閉じられているためserver A、リバース SSH が適切なオプションであると考えました。

リバース SSH を作成するには、次のコマンドを使用します。 ssh -fNT -R 4000:localhost:22 [email protected] -i <private-key>

今はserver Aポートが開いているのがわかります4000。しかし、トラフィック全体を転送する方法がわかりません。server B

答え1

すぐに思いついたのは、tun インターフェイスを作成し、ルーティングを適切に設定することです。以下に示すように、ssh man から次のコマンドライン引数が利用可能です。

-w local_tun[:remote_tun] 指定された tun(4) デバイスを使用して、クライアント (local_tun) とサーバー (remote_tun) 間のトンネルデバイス転送を要求します。デバイスは数値 ID またはキーワード「any」で指定できます。キーワード「any」は、次に使用可能なトンネルデバイスを使用します。remote_tun が指定されていない場合は、デフォルトで「any」になります。ssh_config(5) の Tunnel および TunnelDevice ディレクティブも参照してください。

Tunnel ディレクティブが設定されていない場合は、デフォルトのトンネル モードである「ポイントツーポイント」に設定されます。別のトンネル転送モードが必要な場合は、-w の前に指定する必要があります。

この回答ではさらに詳しい情報が提供されています。

https://unix.stackexchange.com/questions/525217/create-network-interface-from-ssh-tunnel

関連情報