私は、PuTTY のポート転送機能を利用して、自宅の PC (Windows 11 で実行) から、プロビジョニングしてセットアップした AWS Lightsail インスタンス (Ubuntu LTS 20.04 で実行) への接続を確立しようとしています。その目的は、自宅の PC 経由でインスタンスに利用可能なインターネット接続を使用することです。これは、インターネットにアクセスするためにプロキシ サーバーまたは VPN を使用するようなものです。
次のパラメータを想定します。
- AWS インスタンスのパブリック IP アドレス:
x.x.x.x
- AWS インスタンスのプライベート IP アドレス:
Y.Y.Y.Y
- SSH ポート:
22
6088
アカウントレベルとインスタンスレベルの両方でポートを開きました- ローカル PC のパブリック IP アドレス (ルーター IP):
a.a.a.a
- ローカル PC のプライベート IP アドレス:
b.b.b.b
これまでの私の理論的な理解では、リモート Lightsail インスタンスのポート 6088 を自宅の PC の対応するローカル ポート 6088 にリモート ポート転送するには、PuTTY を使用する必要があります。
自宅の PC のプロキシ設定を に設定した後、自分の PC からリモート インターネットにアクセスしようとしましたが、失敗しました。localhost:6088
当初は VNC クライアント サーバー スキームを介してリモート インスタンスにアクセスする予定でしたが、これもうまくいきませんでした。
少しグーグルで検索してみたところ、AWS では VPN ネットワークの設定専用のインスタンスも提供しており、これらによって私が検討しているようなユースケースが実現できることが分かりました。
正しい方法を提案してくれる人はいますか?
答え1
転送モードが逆になっています。「リモート」転送では、サーバーがリスナーになり、サーバー アドレス:ポート (サーバー内からは localhost:6088、他のホストからは serverip:6088 など) への接続が行われ、クライアント システムに転送されます。
あなたがやろうとしているのはそれとは全く逆のことなので、SSHが「ローカル」転送モードのようなものになるはずです。クライアントポート 6088 のリスナーです (AWS サーバーのファイアウォール ルールは関係ありません)。
「リモート」モードと「ローカル」モードはどちらも固定機能です。つまり、アプリが接続先を指定することはできません。常に指定された宛先にのみ転送します。たとえば、ローカルポートが6088でリモート宛先がgoogle.com:443の「ローカル」転送がある場合、毎localhost:6088 への接続は google.com:443 に中継され、他の場所には中継されません。
(これはまた、「ローカル」または「リモート」であってもだった適切なモードでは、ポートをプロキシ構成 – 実際のサービスであるかのように直接使用します。
代わりに、PuTTY の 3 番目のモードである「動的」転送が必要になります。これは「ローカル」と同じカテゴリですが、PuTTY を SOCKS プロキシのように動作させます。ポート 6088 で「動的」転送を使用すると、ブラウザを設定して localhost:6088 を SOCKS プロキシとして使用し、AWS サーバーを介して参照できるようになります。
PuTTY は SOCKS プロキシとしてのみ機能し、Firefox と Chrome は SOCKS を話すプロキシの使用方法を認識しますが、他の多くのアプリは認識しません。したがって、「HTTP CONNECT」はサポートしていても SOCKS をサポートしていないアプリは比較的よく見られます。
PuTTYにはそれをエミュレートする機能がないので、本物AWS サーバー上に HTTP プロキシ サーバー (例: Squid または Privoxy) を配置し、"ローカル" 転送を使用して SSH 経由でアクセスします。(または、Tor が実行していた/実行していたように、Privoxy/Polipo をローカルで実行し、PuTTY の "動的" ポートを指定して、'ブラウザー→HTTP→Privoxy→SOCKS→PuTTY→SSH→AWS' と移動します。)
上記のすべては TCP トラフィックのみを処理できます。何らかの目的で UDP が必要な場合 (または
ping
プロキシを使用する場合)、これらのプロキシ タイプはいずれも機能しません。その場合、PC と AWS サーバーの間に VPN トンネル全体を設定する必要があります。(SSH は Windows ではこれを実行できず、一般的にはあまり適していません。代わりに、OpenVPN、Tailscale、WireGuard などを使用します。) この目的のために特別な種類のサーバーは必要ありません。
(VPN の設定に適さないサーバーの種類があります。具体的には、一部のプロバイダーが提供する非常に安価な「VPS」です。これらは OpenVZ コンテナーを偽装しただけのものですが、通常は少なくとも OpenVPN をホストできます。AWS にはそのようなものはないと思います。AWS の VPS はすべて完全に機能する仮想サーバーです。)