おそらくプロキシ、さらには SOCKS プロキシについて聞いたことがあるでしょう。彼らの核心では、 プロキシサーバー プロキシは、ローカルまたはリモート マシン上に存在するハードウェアまたはソフトウェア ベースの仲介者です。この中間的な役割では、Web ブラウザー (Web クライアント) と Web サーバー間のすべてのトラフィックを自分自身経由でルーティングし、直接通信をブロックまたは防止します。
同時に、種類に応じて、プロキシはオンライン ID に関する一部の情報を隠します。隠蔽されるデータの例には、IP アドレスや位置情報が含まれます。
実際、プロキシにはいくつかの種類があります。そして、それらは以下に基づいて 4 つのグループに大別できます。
- プロトコル、つまり SOCKS プロキシ、HTTP および HTTPS プロキシ
- アクティブなユーザーの数、つまり 共有プロキシ, プライベートプロキシ、 そして 処女代理
- トラフィック ルーティングの方向、つまりフォワード プロキシとリバース プロキシ
- 割り当てられた IP アドレスのタイプ、つまり、 居住用プロキシ, データセンタープロキシ、 そして モバイルプロキシ
ただし、この記事では主に、オンライン通信に使用されるプロトコルによって識別できるプロキシに焦点を当てます。このカテゴリには、SOCKS プロキシ、HTTP および HTTPS プロキシが含まれます。
SOCKS プロキシ サーバーとは何ですか?
SOCKS プロキシは、SOCKS プロトコルを利用して、ファイアウォールを介したホスト間または Web クライアントと Web サーバー間のネットワーク接続を容易にする仲介者です。このプロキシは、SOCKS デーモンとして知られるソフトウェアを実行します。このソフトウェアは特にファイアウォール ホスト (ファイアウォールがインストールされているマシン) にインストールされ、このファイアウォールを通過する安全なルートを作成します。
したがって、これは、SOCKS プロトコルがファイアウォールをバイパスするのではなく、プロキシ サーバー経由でファイアウォールを通過する通信を許可することを意味します。したがって、ファイアウォールは、すべての不正なトラフィックと、ユーザー名や SOCKS プロトコルを使用して送信されていないトラフィックなど、特定のパラメータに準拠しないトラフィックをブロックします。
ただし、通信がこのプロトコルを介して送信され、その延長として SOCKS プロキシを介して送信されるとします。その場合、ユーザーはインターネットにアクセスしたり、外部ネットワーク内の他のコンピュータと通信したりできるようになります。一般に、SOCKS プロキシ サーバーは、アプリケーション レベルの接続、つまりアプリケーション層プロトコル経由で送信される接続をサポートします。 (アプリケーション層プロトコルには、HTTP、HTTPS、SMTP、TELNET、FTP、POP、MIME などが含まれます。)
SOCKS プロキシ サーバーの仕組み
この構成の結果、総称してホストとして知られるユーザーのコンピュータは、他のホストまたは Web サーバーとの安全な通信を可能にする安全な一時ポイントとして SOCKS プロキシ サーバーを利用します。また、ネットワーク ファイアウォールまたはファイアウォール ホストがこの仲介手段を介して接続を保護していることを考慮すると、望ましくない侵入者がホスト間の通信にアクセスするのを防ぐことができます。したがって、ホスト上のアカウント (プロキシ アカウント) を持つ当事者のみが、ファイアウォールを介して SOCKS プロトコルを使用して送信されたネットワーク パケットにアクセスできます。
SOCKS プロキシ サーバーは、ユーザーのコンピュータ間の通信だけでなく、Web クライアントと Web サーバー間の通信も可能にします。また、他のすべてのプロキシ サーバーの場合と同様に、ネットワーク トラフィックを仲介し、直接アクセスをブロックします。したがって、クライアントが HTTP、HTTPS、または FTP リクエストを送信すると、SOCKS サーバーはそれらのリクエストを受信し、その後クライアントに代わって Web サーバーにそれらのリクエストを提供します。同時に、サーバーから応答を受信し、それらをクライアントに転送します。ただし、SOCKS プロキシ サーバーについて詳しく説明する前に、まず SOCKS プロトコル、その歴史、およびその仕組みを理解しましょう。
SOCKSプロトコルの歴史
SOCKS プロキシ サーバーという名前は、SOCKS と契約されている Socket Secure として知られるネットワーク プロトコルに由来しています。上記の説明に基づいて、SOCKS プロトコルは、ネットワーク ファイアウォールを介したネットワーク接続のフレームワークを提供します。このプロトコルは、1990 年代初頭に初めて導入されて以来、さまざまな改良が加えられてきました。このセクションでは、長年にわたる進化について説明します。
SOCKS バージョン 1
元の SOCKS プロトコルは、 紙 ただし、この論文を発表した時点では、SOCKS は MIPS Computer Systems で 3 年間稼働していました。これは、SOCKS が最初に 1989 年頃に作成されたことを意味します。
David Koblas と Michelle Koblas が執筆したこの論文では、SOCKS プロトコルを使用して、ファイアウォール ホストを介した便利で安全なネットワーク接続を提供する方法について説明しました。その作成者は、当時存在していた問題の解決策としてこれを設計しました。コンピュータがインターネットに接続できるようにして安全な環境を作成する方法は、面倒で不便であり、簡単に侵害される可能性がありました。
この論文では、SOCKS ライブラリ、プロトコル、およびデーモン (SOCKS プロキシ ソフトウェア) を含む SOCKS パッケージについて説明しました。このライブラリには、ファイアウォールにインストールされている SOCKS デーモンへの接続を確立する呼び出しが含まれていました。このようにして、ライブラリは、デーモンがリクエストの発信者であるかのように、情報の送信とネットワーク接続を可能にしました。したがって、外部ホストにとっては、デーモン (SOCKS プロキシ) がリクエストの発信者であるように見えます。 SOCKS ライブラリ ルーチンまたは呼び出しには、次のものが含まれます。
- 接続する: SOCKS プロキシ (デーモン) が指定された IP アドレス、ポート番号、およびユーザー名へのアウトバウンド接続を確立することを要求します。
- 練る: 指定された外部 IP アドレスからの受信接続を要求します。ユーザー名の要件も含まれていますが、このユーザー名は要求者 (送信者) に属し、情報のログ記録に使用されます。一般に、Bind 呼び出しは、新しいソケット接続をファイアウォール上の空きポートにバインドします。
- 聞く: 待機 (リッスン) し、外部ホストからの呼び出しを受け入れる準備ができています。
- GetSOCKName: ファイアウォール上のソケットのIPアドレスとポート番号を取得します。
- 受け入れる:外部ホストからの接続を受け付ける
SOCKS バージョン 4 (SOCKS4)
Ying-Da Lee は SOCKS プロトコルを拡張し、 SOCKS バージョン 4 (SOCKS4) 後で導入する前に SOCKS バージョン 4a (SOCKS4a)。したがって、SOCKS4a は、IP アドレスを見つけるための宛先ホスト (サーバー) のドメイン名の解決をサポートすることにより、プロトコルの機能を拡張しました。
SOCKS バージョン 5 (SOCKS 5)
1996 年に、寄稿者のグループが次のような論文を書きました。 メモ この文書では、基礎となるフレームワークの機能を拡張して、より高度なアプリケーション層プロトコルをサポートできるようにすることで、SOCKS プロトコルの機能を拡張しました。さらに、SOCKS5 では、伝送制御プロトコル (TCP) とユーザー データグラム プロトコル (UDP) の両方でクライアント/サーバー アプリケーションのサポートが導入されました。さらに、アドレッシング システムを拡張して以下を追加しました。 IPv6アドレス そしてドメイン名のアドレッシング。
最後に、SOCKS5 では強力な認証が導入されました。新しいバージョンでは、任意の認証プロトコルを使用するための汎用フレームワークが指定されています。たとえば、SOCKS 接続を開始する場合、次の認証を使用できます。
- ユーザー名/パスワードのサブネゴシエーション 認証サービス (ただし、ユーザー名/パスワードのサブネゴシエーションは安全ではないため、ハッカーや第三者が「スニッフィング」を行う可能性がある場合には推奨されません)。
- 安全なユーザー名とパスワードの認証 既知のホスト鍵を使用し、暗号化通信を通じて鍵を中継します。
- GSS-API認証 方法
この改訂により、次のようないくつかのタイプの SOCKS プロキシが作成されたことは注目に値します。
- SOCKS4 プロキシ
- SOCKS5 プロキシ
SOCKS4 と SOCKS5: 類似点と相違点
SOCKS4 と SOCKS5 の類似点
SOCKS4 および SOCKS5 プロトコル、さらにはプロキシも次の点で似ています。
- SOCKS4 および SOCKS5 の SOCKS サービスはポート 1080 にあります。
- これらは同じ操作を利用します。つまり、 接続する, 練る, 聞く, 受け入れる、 そして getSOCKname.
SOCKS4 と SOCKS5 の違い
SOCKS4 および SOCKS5 のプロトコルとプロキシは、次の表に示すさまざまな点で異なります。
SOCKS4 | SOCKS5 | |
サポートされているドメイン | TCPのみをサポートします | TCPとUDPの両方をサポートします |
安全 | ネットワークパケットを認証しないため、安全でないファイアウォールトラバーサルが行われます。 | ユーザー名とパスワードの要件などの強力な認証スキームをサポートしているため、安全なファイアウォールの通過が促進されます。 |
サポートされているプロトコル | FTP、SMTP、TELNET、HTTP、および GOPHER (つまり、アプリケーション層プロトコル) をサポートします。 | FTP、SMTP、TELNET、HTTP、GOPHER に加え、NTP、DHCP、BOOTP、NNP、TFTP、RTSP、RIP、DNS (つまり、アプリケーション層プロトコルとトランスポート層プロトコル) をサポートします。 |
IPアドレス | IPv4 アドレスのみをサポートします | IPv4 および IPv6 アドレスをサポートします |
ドメイン名 | すべてのドメイン名を解決できないため、IP アドレスを見つけることができません。 | すべてのサーバーのドメイン名を解決して IP アドレスを見つけることができます |
アドレッシング | ドメイン名のアドレス指定はサポートされていません | ドメイン名アドレッシングをサポートします |
SOCKS プロキシ接続はどの程度安全ですか?
SOCKS 接続は、HTTPS 接続とは異なり、暗号化されません。ただし、暗号化された HTTPS 接続は、外部からはまったくアクセスできない SOCKS 接続 (接続内) 経由で確立できます。
これは複雑に見えるかもしれませんが、実際には非常に単純で、ユーザーが最初に SOCKS 接続を確立するときに (たとえば、 プロキシファイア または ブラウザアドオンFoxyproxy) をクリックすると、SSL 証明書を使用する Web ページに移動します (アドレス バーの左側にある「ロック」)。
ブラウザ <-> SOCKS (HTTPS) SOCKS <-> 対象のウェブサイト
これは、この接続が完全に安全であり、ユーザーが Web サイトで何をしているのか、何を印刷しているのか、どのような写真やビデオを表示またはアップロードしているのかを、プロキシ プロバイダーを含め誰も正確に知ることができないことを意味します。
SOCKS プロキシ サーバーの長所と短所
SOCKS プロキシの利点
SOCKS プロキシの利点は次のとおりです。
- エラーが少ない: SOCKS プロキシは、HTTP プロキシとは異なり、ヘッダーなどのデータ パケットを解釈したり書き換えたりしません。したがって、ラベルの誤りやその他のエラーが発生する可能性はありません。
- 複数のプロトコルのサポート アプリケーション層とトランスポート層: SOCKS4 プロキシは、FTP、SMTP、TELNET、HTTP、および GOPHER プロトコルをサポートします。対照的に、SOCKS5 プロキシは、FTP、SMTP、TELNET、HTTP、および GOPHER プロトコルに加え、NTP、DHCP、BOOTP、NNP、TFTP、RTSP、RIP、および DNS をサポートします。対照的に、HTTP プロキシは HTTP および HTTPS プロトコルのみをサポートします。
- セキュリティの向上: 特に SOCKS5 プロキシは、さまざまな段階で認証を実行します。これによりセキュリティが向上します。ただし、一般に、すべての SOCKS プロキシはデータを解釈したり書き換えたりしないため、個人情報を含むデータ パケットを明らかにすることはできません。
- プライバシーの強化: SOCKS5 プロキシは IP アドレスを変更する可能性があり、特に IP アドレスにそのようなデータが保存されていることを考慮すると、実際の場所などの情報が隠蔽されます。
SOCKS プロキシの欠点
SOCKS プロキシの欠点は次のとおりです。
- 接続遅延・速度が遅い: 特に SOCKS5 プロキシは、操作のさまざまな段階で多数の認証を実行する必要があるため、速度が遅くなります。
- バックコネクトが制限されている: SOCKS5 のバインド コマンドは、サーバーがクライアントに複数回接続 (バックコネクト) する必要があるプロトコルを十分にカバーしていません。代わりに、単一のバック接続のみを必要とする FTP などのプロトコルに主に適しています。
- サポートされている UDP の機能が制限されている: SOCKS5 の初期 UDP サポートには制限された機能がありました。たとえば、このプロトコルは、UDP アプリケーションがデータを送信して応答を受信することを想定しています。ただし、多くの UDP アプリケーションは、IP アドレス情報を必要とせず、データを送信したり、特定のポートを使用したりせずに UDP データを受信できます。したがって、SOCKS5 プロキシの UDP 機能は制限されています。
- 下位非互換性: SOCKS5 プロキシには、SOCKS4a などの SOCKS プロトコルの以前のバージョンとの下位互換性がありません。
SOCKS プロキシの使用方法
SOCKS プロキシは次の方法で使用されます。
- これらにより、ユーザーは地理的ブロックを回避できます。このように、SOCKS プロキシ、特に SOCKS5 プロキシにより、他の場所からコンテンツにアクセスできるようになります。 (地域ブロックまたは地域制限 Web サイトが特定の場所からの訪問者にのみコンテンツを表示する慣行です)。
- SOCKS プロキシ サーバーは、学校、職場、政府によるインターネット フィルタリングのバイパスに役立ちます。
- メッセンジャーの匿名使用 電報
- ビデオストリーミングとライブ通話
- トレント またはピアツーピアの共有とダウンロード
- SMTP サポートによる大量の安全な電子メール送信
- SOCKS5 は多数のアプリケーションレベルのプロトコルをサポートしているため、一般的な Web ブラウジング
- ビジネス ネットワークへの不正アクセスのブロック: SOCKS プロキシは、ビジネス ファイアウォールを介した安全なインターネット アクセスを可能にする一時的な仲介者として機能し、望ましくない侵入者がローカル ネットワーク内のサーバーやコンピュータにアクセスするのを防ぎます。
SOCKS プロキシと HTTP プロキシの比較
前に説明したように、SOCKS プロキシと HTTP プロキシはプロトコルベースのプロキシ サーバーです。 HTTP および HTTPS プロキシが実現できることの詳細については、次の記事を参照してください。 HTTP および HTTPS プロキシ.
SOCKS プロキシと HTTP プロキシの比較
このセクションでは、SOCKS と HTTP プロキシの類似点と相違点について詳しく説明します。
SOCKS プロキシと HTTP プロキシの類似点
SOCKS と HTTP プロキシは、次の点で似ています。
- どちらもインターネット プロトコルに基づいています
SOCKS プロキシと HTTP プロキシの違い
SOCKS と HTTP プロキシは次の点で異なります。
SOCKS プロキシ | HTTPプロキシ | |
プロトコル | UDP プロトコルだけでなく、多数の TCP プロトコルもサポートしています。 | HTTP および HTTPS プロトコルのみをサポートします |
安全 | データは暗号化されません | HTTPS プロキシはデータを暗号化します |
ファイアウォールアクセス | SOCKS プロキシは、ネットワーク ファイアウォールを介したインターネット アクセスを提供します | ファイアウォールを介した接続は提供されません |
データの解釈 | データを解釈、分析、または書き換えることはありません | データを解釈し、場合によってはヘッダー パケットを書き換えます。 |
相互運用性 | SOCKS プロキシは HTTP および HTTPS プロトコルを使用できます | HTTP および HTTPS プロキシは SOCKS プロトコルを使用できません |
OSI 分類 | SOCKS プロキシは、 OSI 分類、つまりセッション層 | HTTP プロキシは、OSI 分類の上位レベル (レイヤー 4)、つまりトランスポート層で見つかります。 |
構成 | SOCKS プロキシは、Web クライアントまたは Web サーバーではないマシンにのみ統合できます。 | HTTP プロキシは、Web クライアントまたはサーバーのいずれかに構成できます。 |
ポート | SOCKS サービスは、SOCKS プロキシ ポート 1080 および 1085 を通じて利用できます。 | HTTP プロキシはポート 80、8080、8085、3128、および 3129 を使用しますが、HTTPS プロキシはポート 443 を使用します。 |
SOCKS プロキシと VPN
確かに、SOCKS プロキシはファイアウォールを通過する安全なトンネルを作成できます。しかし、次を使用して安全なトンネルを作成できることもご存知ですか? 仮想プライベート ネットワークまたは VPN? VPN は、ローカル ネットワークと外部ネットワークの 2 つのネットワーク間に安全な通信ルートを作成します。これは、すべてのインターネット トラフィックをトンネル経由でルーティングすることによって実現されますが、その前に、エントリ ポイント (コンピュータなど) でデータを暗号化します。トンネルは出口ノード (VPN の出口サーバー) で終了し、ユーザーのローカル ネットワークまたはコンピュータからの発信リクエストに新しい IP アドレスを割り当て、実際の IP アドレスを効果的に隠します。
VPN を使用している場合、すべてのリクエストは終了メモから発信されているように見えます。同時に、Web サーバーからのすべての応答がこの VPN サーバーで終了しているように見えます。この仕組みのおかげで、VPN を使用すると、VPN プロバイダーがサーバーを備えている任意の場所にある、地理的にブロックされているコンテンツにアクセスできます。
たとえば、ドイツに居住していて、米国の居住者のみが閲覧できる Web コンテンツにアクセスしたい場合は、米国を拠点とする VPN サーバーを使用するだけで済みます。
これを行うには、まずコンピュータに VPN ソフトウェアをインストールする必要があります。これにより、コンピュータがエントリ ノードに変換されます。ソフトウェアはデータの暗号化を担当します。次に、出口ノードを選択する必要があります。VPN がこの出口サーバーに接続すると、自由にリクエストを送信できるようになります。
VPN の利点
仮想プライベート ネットワークの長所は次のとおりです。
- 暗号化とセキュリティ: VPN はすべてのリクエストとサーバー応答を暗号化するため、比類のないセキュリティが保証されます。このため、公共 Wi-Fi 経由でインターネットにアクセスする場合は常に VPN を使用することをお勧めします。
- 地理的に制限されたコンテンツへのアクセスを提供する: VPN は、別の国の出口ノードを経由してトラフィックをルーティングすることで、ユーザーをその場所に仮想的に転送します。その結果、VPN がなければ母国ではアクセスできなかった Web コンテンツにアクセスできるようになります。
- オンラインプライバシー: VPN は実際の IP アドレスを隠し、その後別のアドレスを割り当てます。このようにして、あなたの場所 (州、都市、国、おおよその座標) など、あなたに関する特定のデータを隠すことによって、オンライン プライバシーを保護します。
VPN の欠点
仮想プライベート ネットワークの短所は次のとおりです。
- 接続速度が遅い: このソリューションでは、すべての発信リクエストと受信レスポンスを暗号化する必要があるため、通常は速度が遅くなります。
- ユーザーデータのログ記録: VPN ユーザーの間で騒動を引き起こしたもう 1 つの一般的な欠点は、一部の VPN プロバイダーがユーザー データを頻繁に記録することです。これは、その後、求められた場合に法執行官に当該データを提供するために行われます。実際、いくつかのプロバイダーが調査機関にユーザーデータを提供して話題になりました。さらに、いくつかの国、例えば、 インド、VPNプロバイダーにユーザーデータの保存を義務付ける法律があります。このような背景に対して、観察者らは、 以前にアドバイスされた ユーザーはプロバイダーの「ログなし」ポリシーを額面通りに受け取る必要があります。
- 無料の VPN は一般的に安全ではありません: このような VPN は、複数のユーザー間で同じ安全なトンネルを共有することが多いため、「盗聴」または盗聴の可能性が高まる可能性があります。
- VPN は特定の国で禁止されています: 一部の国では、VPN の使用を完全に違法としています。その他の国では、政府認可の VPN のみを使用できます。
VPNの使用
仮想プライベート ネットワークは次の方法で使用されます。
- VPN は、パブリック アクセス ポイント経由でインターネットにアクセスするときにセキュリティを提供します
- 地理的にブロックされたコンテンツへのアクセス: 前述したように、SOCKS5 プロキシなどの VPN を使用すると、どこからでもあらゆるコンテンツにアクセスできます。
- リモートワークの促進: 企業は、リモートワーカーに専用の VPN を介してシステムまたはサーバーにログインすることを要求することでデータを保護します。
SOCKS プロキシと VPN の比較
SOCKS プロキシの上記の機能、利点、欠点を思い出して、SOCKS プロキシと VPN をどのように比較しますか?
SOCKS プロキシと VPN の類似点
SOCKS プロキシと VPN には、次のような類似点があります。
- オンライン プライバシー: SOCKS5 プロキシと VPN は実際の IP アドレスを隠し、オンライン プライバシーを提供します。
- セキュリティ: どちらのソリューションも、方法は異なりますが、セキュリティを強化します。 VPN はデータを暗号化し、SOCKS5 プロキシが認証を実行します。
- サポートされているプロトコル: 一部 VPNプロトコルOpenVPN などは TCP と UDP をサポートし、SOCKS5 プロキシも TCP と UDP をサポートします。
- 地理的制限のバイパス: SOCKS5 プロキシと VPN を使用して、地理的にブロックされているコンテンツにアクセスできます。
SOCKS プロキシと VPN の違い
SOCKS プロキシ サーバーと VPN はいくつかの点で異なります。以下の表は、これらの違いをまとめたものです。
SOCKS プロキシ | VPN | |
プロトコル | SOCKS プロキシ、特に SOCKS5 プロキシは、FTP、SMTP、TELNET、HTTP、GOPHER、NTP、DHCP、BOOTP、NNP、TFTP、RTSP、RIP、DNS などのトランスポート層プロキシとアプリケーション層プロキシをサポートします。 | VPN は通常、IKEv2、OpenVPN、L2TP/IPSec、WireGuard、SSTP、PPTP などの VPN プロトコルを使用します。 |
接続速度 | SOCKS プロキシは暗号化を行わないため、一般に高速です。 | VPN はデータを暗号化するため遅い |
サーバーの数 | SOCKS プロキシ サービス プロバイダーは、多くの場合、数十万、場合によっては数百万のプロキシ サーバーを提供します。 | VPN プロバイダーは通常、サーバーの数が少ないです |
国 | 一部の SOCKS プロバイダーは 150 か国以上にプロキシ サーバーを設置しています | 通常、VPN プロバイダーが保有する VPN サーバーの国は少なく、多くの場合 100 未満の国です。 |
結論
SOCKS プロキシにより、ネットワーク ファイアウォールを介したユーザーのコンピュータ間および Web クライアントと Web サーバー間の通信が可能になります。 SOCKS プロトコルに基づいたこのプロキシ タイプは、侵入者がさまざまな関係者間の通信にアクセスすることを防ぎます。長年にわたり、SOCKS プロトコルは改良され、その結果、SOCKS4、SOCKS4a、および SOCKS5 といういくつかのバージョンが誕生しました。その結果、SOCKS プロキシには SOCKS4 プロキシと SOCKS5 プロキシといういくつかのタイプがあり、後者が優れた機能を提供します。 SOCKS プロキシは、トレント、電子メール、ビデオ ストリーミング、ライブ通話、一般的なブラウジングなど、さまざまな方法で使用されます。また、オンラインの匿名性も提供します。この記事では、SOCKS プロキシと VPN および HTTP プロキシを比較しました。独自のニーズに合わせてどれを選択すればよいかについて、より詳しく理解していただければ幸いです。