
次のようなシナリオがあります
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