私のクライアントコンピュータは、インターネットのどこかにあり、内部のターゲットコンピュータのカスタムポートにアクセスする必要があります(または最初はアクセス可能なコンピュータのすべてのポートですが、最終的には12345などのターゲットコンピュータの特定のポート)。ネットワーク内部コンピュータの接続のみを許可するネットワーク。
|
Client --X--> | Target:12345
|
(the Internet) (private network)
VPNなし
プライベートネットワークにはVPNサーバーがありますが、クライアントへのルートアクセス権がなく、そこから(オープン)VPNを使用できないため、プライベートネットワークに簡単にアクセスできません。
根のない「ドア」
おそらく、クライアントがターゲットに到達するのに役立つ最初のものは、外部の世界からアクセスできるプライベートネットワークのゲートシステムであり、ターゲットはゲートからのTCP接続を許可します。
|
Client --?--> Gate --ok--> Target:12345
|
問題は、Gate [:some_port]に接続しているクライアントが実際にTarget:12345と通信できるように、Gateで透過的なTCPトラフィック転送を設定することです。
Gateがrootアクセス権を持っている場合は、iptablesを使用してGate [:chosen_port]に到着したTCPトラフィックをTarget:12345に透過的に転送します。しかし、私はGateへのrootアクセス権を持っていません(しかし、そこにはユーザーレベルのアクセス権があり、SSH経由でアクセスできます)。
SSHを介してターゲットにアクセスできる場合は、クライアントがそのトンネルを介してターゲットにアクセスできるように、ターゲットとゲートの間にSSHトンネルを設定します。ただし、TargetへのSSHアクセス権はありません。プライベートネットワーク内でポート12345へのTCP接続を確立するだけです。
クライアントとゲートウェイの両方で、ルートなしで宛先へのSSHアクセスなしで上記のTCP転送を設定できますか?答えが「いいえ」の場合は、その後の質問があります。
ルート「ドア」+ルート「インナー」なし
Gateに加えて、プライベートネットワークにはrootアクセス権を持つInsiderマシンもあります。
|
Client -ssh-> Gate -ssh-> Insider --?--> Target:12345
|
リバース SSH トンネルは Insider から Gate に設定されるため、クライアントは Insider に SSH で接続でき、理論的には、Insider は Target のポート 12345 への TCP 接続を (「手動で」) 確立できます.しかし、これは私が探している透明なTCPトラフィック転送ソリューションではありません。
後者の場合、クライアントからTarget:12345にトラフィックを透過的に転送できるように、Insiderでrootアクセス権を持つことはできますか?
どんなアドバイスもありがとうございました!
答え1
SSHポート転送が利用可能
ssh [email protected] -L 10000:172.16.10.10:10000
localhost:10000 に接続できる場合、実際には 172.16.10.10:10000 のサービスに接続されます。
ssh -Dパラメータを使用して「プロキシ」を生成することもできます。