私は
ローカルコンピューターとSOCKS/SSHを使用した中間サーバーを介して、ローカルネットワーク上のWebサイトへのアクセスを一時的に共有し、リモートコンピューターで表示できるようにします。これは、リモートコンピューターとローカルコンピューターの両方がNATの背後にある場合に可能ですか?はいの場合、どのように?
NAT - Static Public IP - NAT
Local Network <- Local Computer - Intermediate Server - Remote Computer
Ngrokや同様のサービスでこれを実行できることは知っていますが、SSHとSOCKSを使用して自分で実行する方法を学びたいと思います。
報奨金:サンプルコードとその方法の説明を含む回答を優先します。ありがとうございました。
動的ポート転送が必要な場合は、次の構成を試すことができます。
l-user:my-local-computerのユーザー
i-user:中間のユーザー
intermediate:中間ホストのIPアドレス
my-local-computerで:
ssh -R 10022:localhost:22 i-user@intermediate
上の-リモート:
ssh -D 3456 -J i-user@intermediate -p 10022 l-user@localhost
my-local-computer
からの接続が開始される前にthe-remote
とintermediate
の間のリモートポート転送が存在している必要があります。
この構成では、the-remote
はポート3456でSOCKS5プロキシとして機能し、トラフィックをintermediate
経由でmy-local-comuter
に転送し、ローカルLANで終了します。
前提:ローカルWebサーバーはIP192.168.1.100の別のホストで実行されます
中間サーバーはIP2.3.4.5で実行されます
ローカルホストはssh経由で中間サーバーに接続し、リモートポート転送を行います。
Sudo ssh -R 10080:192.168.1.100:80 -R 10443:192.168.1.100:443 [email protected]
リモートホストはsshを介して中間サーバーに接続し、ローカルポート転送を実行します。
Sudo ssh -L 80:localhost:10080 -L 443:localhost:10443 [email protected]
書面で:
ローカルマシンは、リモートポートフォワーディングを備えたsshトンネルを使用して、中間サーバーのlo
インターフェイス上のポート10080および10443を「キャプチャ」します。次に、両方のリモートポートが、ローカルネットワークのWebサーバー(192.168.1.100)のポート80および443に転送されます。
リモートマシンは、独自のsshトンネルを使用して、独自のlo
インターフェイスのポート80および443を「キャプチャ」し、それらをのlo
インターフェイスのポート10080および10443に転送します。中間サーバー。
したがって、内部ポートlocalhost:80またはlocalhost:443に接続しているリモートマシン上のアプリケーションは、中間サーバーの内部ポート:10080または:10443に転送され、ローカルマシンを介してポート192.168に転送されます。 Webサーバーのlanインターフェイスで.1.100:80または192.168.1.100:443。
お役に立てば幸いです。
編集:lo
インターフェースのIPアドレスを作り直しました。