SSHとSquidをプロキシとして使用する場合の違いは何ですか?

SSHとSquidをプロキシとして使用する場合の違いは何ですか?

私は長い間(数年)私のサーバーの1つで透明なプロキシとしてSquidを使用してきました。

デフォルトでは、次の手順を実行して、クライアントとSSH + Squidサーバーの間にSSHトンネルを作成しました。

ssh -T -N -x -C -L3128:127.0.0.1:3128 cedric@xxx

その後、Webブラウザ(クロム)を起動し、ポート3128の127.0.0.1にプロキシサーバーを提供しました。

これは長い間うまくいきましたが、複数のサイト(フォーラム、Googleをログインとして使用するスタック交換など)でロギングの問題が発生し始めました。一部は常にうまくいきました(例:GMailとすべてのGMailサービス)。ログイン問題の原因が何であるかわかりません。サーバーOSとソフトウェアをアップグレードするときに、いくつかのSquid構成の問題が原因であると考えられます。

そこでVPN設定について考えてみましたが、「貧しい人のVPNとしてのSSH」という記事を読んで、SSHを使用してクライアントで簡単にこれを行うことができることに気づきました。

ssh -D 5222 cedric@xxx -N

次に、ポート5222のSOCKSホストとして127.0.0.1を使用するようにブラウザを設定しました。

今、すべてがうまくいきます。すべてのログイン問題が解決されたようで、サーバーにSquidは必要なくなりました。

しかし、私はそれがどのように機能するのか理解していません。さまざまな「私のIPとは何ですか?」ウェブサイトで私のサーバーアドレス(私が望むアドレス)を見ることができます。また、これらのサイトは、SSH「トンネル」が実行されているかどうかを検出できないようです。

基本的に私の質問は次のとおりです。技術的にSquidを透明プロキシとして使用することと「SSH -D ... -N」を使用し、VPNを使用することの違いは何ですか?

私が訪れるサイトの視点に違いはありますか?

また、"SSH -D ... -N"を使用するときに私が訪問しているウェブサイトで私の実際のIPを検出する方法があるかどうか疑問に思います。これは技術的に可能ですか、それともブラウザが単にその情報を取得できないのですか?

答え1

1)Squidはhttpおよびhttpsトラフィック用の特別なプロキシです。既知のように、このプロトコルはキャッシュ、フィルタリング、書き換え規則、DNS解決などのいくつかの高度な機能を提供できます。すべてのWebブラウザは、httpプロキシがプロトコル仕様の一部であるため、これを処理する方法を知っています。

また、イカは次の役割も果たすことができます。透明これを使用するためにWebブラウザを設定する必要はありませんが、ファイアウォールはトラフィックをプロキシにリダイレクトします。ブラウザは自分がプロキシを使用していることを知りません。これがまさにこの場合透明が意味するところです。この意味では、以前の設定は透明ではありません。

2)ssh -Dはプロトコルに依存しないSOCKSプロキシとして機能します。トンネルのローカル側の sock ポートからのすべてのトラフィックを取得し、ペイロードを抽出し、変更および未確認の状態でリモート側に送信し、実際の宛先に送信します。 SOCKSプロキシが機能するには、クライアントプログラムがこれを具体的にサポートする必要があります。クライアントからSOCKSプロキシに送信されたすべてのパケットは、SOCKSプロキシが送信する場所を知るために変更(カプセル化)される必要があるためです。すべてのWebブラウザがそれをサポートしているかどうかはわかりませんが、原則としてhttpだけでなく多くのプロトコルでも機能します。

3)前のコマンドラインは、ssh -T -N -x -C -L3128:127.0.0.1:3128 ...ローカルポート3128のすべてのトラフィックが変更されずに、事前定義された宛先127.0.0.1:3128に送信される単純なトンネルのみを開きます。送信されたパケットを変更する必要はなく、宛先は固定されているため、すべてのクライアントでこの機能を使用できます。

プロキシに加えて、SSHは常に暗号化されたトンネルを使用しているため、データがトンネルを通過するときに覗いている人からデータを保護できます。

以前の設定では方法1と3を組み合わせましたが、原則として状況に応じて独立して動作できます。

4)VPNを使用すると、ローカルホストから「プロキシ」サーバーまで暗号化されたトンネルを作成できます。この場合、1つのクライアントプログラムに限定されませんが、オペレーティングシステムはすべての非ローカルネットワークトラフィックをプロキシに送信し、それを宛先に転送します。管理にはルート/管理者権限が必要なため、設定が簡単ではない可能性があります。

いずれの場合も、データは最初にリモートホストに送信され、次にリモートホストはターゲットWebサーバーへの実際の接続を作成して要求を送信します。応答は最初にリモートホストに返され、リモートホストはいくつかの内部データから実際の宛先を見つけて元のクライアントに返送します。あなたのIPを示すウェブサイトはあなたのトンネル/プロキシではなくリモートホストだけを見ることができます。

編集する:

あなたのウェブサイトがあなたのIPを知りたい場合は、WebページのJavaScriptまたはプラグインを介していくつかのコードを実行することができ、これはいくつかのバグを使用してブラウザでコードを実行できます実際のIPアドレスを隠す必要がある場合は、JavaScriptとプラグインを無効にする必要があります。

編集2:

VPNを追加

関連情報