サーバー上で、~/.zshrc
(または~/.bashrc
)を修正し、ネットワークプロキシを設定します:
# リバースフォワードポートを設定し、ローカルプロキシポートに接続
export http_proxy=http://127.0.0.1:<port_remote>
export https_proxy=http://127.0.0.1:<port_remote>
ローカルの SSH 設定ファイル~/.ssh/config
を修正し、サーバーの対応する Host 項目に以下を追加します:
RemoteForward localhost:<port_remote> localhost:<port_local>
<port_remote>
をサーバー上でユーザーがプロキシに使用したいポートに、<port_local>
をローカルプロキシソフトウェアが使用するプロキシポートに置き換えます。これは、SSH 接続を確立する際に、リモートポート<port_remote>
からローカルポート<port_local>
への転送を同時に確立することを意味します。
プロキシソフトウェアは LAN を許可 オプションを開く必要があります。
「LAN を許可」(Allow LAN)オプションを開く理由は、ローカルプロキシサービスが LAN(SSH リバースプロキシ転送を介してのトラフィックを含む)からの接続要求を受け入れる必要があるためです。
-
デフォルトではプロキシはローカルループバックインターフェースのみをリッスンします:
・ 「LAN を許可」オプションがオフの場合、Clash や他のプロキシサービスは 127.0.0.1(つまりローカルループバックインターフェース)のみをリッスンします。これは、ローカルマシン(localhost または 127.0.0.1)から発信された接続のみがプロキシサービスによって受け入れられることを意味します。
・ リバースプロキシのシナリオでは、リモートサーバーが SSH トンネルを介してトラフィックをローカルプロキシポートに転送しますが、これらの要求は直接ローカルから発信されるのではなく、LAN インターフェースを介して送信されます。したがって、ローカルプロキシサービスはこれらの LAN または外部インターフェースからの要求を受け入れることができず、プロキシが正常に機能しなくなります。 -
LAN を許可を開くとプロキシは外部要求を受け入れることができます:
・ 「Allow LAN」を開くと、Clash は 0.0.0.0、つまりすべてのネットワークインターフェースをリッスンします。これにより、ローカルプロキシサービスは他のネットワークインターフェースからの接続要求を受け入れることができます。具体的には:
・ LAN 内の他のデバイスからの要求。
・ SSH トンネルを介してリモートサーバーから転送された要求(これらの要求は LAN 内の他のデバイスからの要求のように見えます)。 -
リバースプロキシと LAN 要求:
・ SSH リバースプロキシを使用する際、実際にはリモートサーバー上でポート(例えば 8000)を開き、そのポートの要求をローカルのプロキシポート(例えば 7890)に転送しています。この種の要求はリモートサーバーから SSH トンネルを介してローカルネットワークに入るため、ローカルプロキシにとってはこれらの要求は「外部要求」または「LAN 要求」となります。
・ Clash が LAN をリッスンしていない場合(つまり「Allow LAN」を開いていない場合)、それはトンネルを介して入ってくるトラフィックを受け入れることができず、プロキシ要求が失敗します。
したがって、「Allow LAN」を開くことは、リモートサーバーから転送されたトラフィックをローカルプロキシが処理できるようにするための鍵です。