HTTPプロキシを接続したのに、ゲームがサーバーを見つけられず、Discord通話が接続できず、YouTubeやHTTP/3のサイトがたまにしか読み込まれない場合、それは「質の悪い」プロキシのせいではありません。問題はプロトコルにあります。HTTPプロキシは物理的にUDPトラフィックを処理できず、ゲーム、VoIP通話、現代のQUIC(HTTP/3)はUDPに基づいています。この記事では、なぜそうなるのか、そして本当にすべてのトラフィックを通過させるプロキシを選ぶ方法について説明します — ブラウザのリクエストだけではありません。
TCPとUDP: 基本的な違いは何か
すべてのネットワークデータ転送は、2つの基本的なトランスポートプロトコル — TCPとUDP — に基づいています。TCPは接続を確立し、パケットが正しい順序で配信されることを保証し、失われたパケットを再送信し、各フラグメントの受信を確認します。これは信頼性がありますが、遅いです: データが送信される前に「ハンドシェイク」を実行する必要があり、パケットの損失は再送信と遅延を引き起こします。
UDPは異なります: パケットは接続を確立せず、確認もなく、配信の保証もありません。パケットが失われた場合 — 誰も再送信しません。アプリケーションは損失に対処する方法を自分で決定します。これは欠点のように聞こえますが、リアルタイムのタスクには大きな利点です: 一つのビデオフレームや一つのゲームティックを失う方が、再送信を待って0.5秒の遅延を受けるよりも良いです。
そのため、UDPに基づいているのは:
- オンラインゲーム(Counter-Strike、Dota 2、Fortnite、モバイルシューティングゲーム) — 最小遅延(ping)が重要であり、各パケットの100%の配信は重要ではありません;
- VoIPおよびビデオ通話 — Discord、Zoom、Google Meet、WhatsApp通話は音声とビデオにUDPを使用します;
- リアルタイムストリーミング — WebRTC、低遅延のOBS経由のストリーミング;
- DNSクエリ — ほとんどのDNSリゾルバはUDP上で動作します;
- QUIC / HTTP/3 — GoogleとCloudflareがTCP+TLSの代替として推進している新しいトランスポートプロトコルです。
HTTPとHTTPSは従来の形式(HTTP/1.1、HTTP/2)でTCP上で動作します。したがって、通常のウェブサーフィンはHTTPプロキシを通じて問題なく動作しますが、上記のリストのすべてが壊れ始めます。
なぜHTTPプロキシはTCPでしか動作しないのか
HTTPプロキシはもともと一つのタスク — HTTPリクエストを転送するために設計されました。HTTPSサイトをHTTPプロキシ経由で開くと、ブラウザはプロキシサーバーにCONNECT host:portというコマンドを送信し、プロキシはターゲットサーバーへのTCPトンネルを確立し、その後すべての暗号化されたトラフィックがこのトンネルを通過します。これは、クライアント、プロキシ、サーバーがすべての段階でTCPを使用しているために機能します。
HTTP CONNECTプロトコルには、UDPデータグラムを通過させるメカニズムがありません。プロキシの仕様には「接続なしのトンネル」を作成することは規定されておらず、UDPは接続なしの転送です。したがって、ゲームやDiscordが設定されたHTTPプロキシを通じてUDPパケットを送信しようとすると、オペレーティングシステムはそのトラフィックに対するプロキシ設定を無視するか(パケットは直接プロキシをバイパスして送信されます)、接続が確立されません。
実際には、アプリケーションが「サーバーとの接続がありません」と表示し、通話の音声が数秒ごとに途切れ、ゲームのpingが300-500msを超えたり、マッチメイキングがサーバーを見つけられなかったりします。問題はプロキシの速度やプロバイダーにはなく、HTTPプロキシプロトコルは構造的にUDPを処理できないのです。
QUICとHTTP/3: プロキシにとっての新たな頭痛の種
QUICはGoogleが開発したトランスポートプロトコルで、HTTP/3の基盤となっています。これはUDP上で動作しますが、独自の信頼性、暗号化(組み込みのTLS 1.3)、ストリームの多重化メカニズムを実装しており — つまり、TCPの利点を取り入れつつ、接続の確立による遅延がありません。Cloudflare、Google、YouTube、そして多くのCDNがすでにQUICをデフォルトで広く使用しています。
問題は、ブラウザがデフォルトでQUIC(ポート443/UDP)を通じてサイトに接続しようとすることで、HTTPプロキシがUDPを通過させない場合、次のいずれかが発生します:
- ブラウザがHTTP/2にフォールバック(戻る)し、トラフィックは依然としてプロキシを通過しますが、プロトコルの再交渉に追加の時間がかかるため、ページの読み込みが明らかに遅くなります;
- またはQUICのUDPパケットがプロキシをバイパスして直接実際のIPから送信されます — これは匿名性が重要なタスクにとって致命的です: マルチアカウント、アンチデテクトブラウザ、広告の地域テスト。サイトはプロキシのIPからのトラフィックの一部と、ユーザーの実際のIPからのトラフィックの一部を確認します;
第二のシナリオは、アンチデテクトブラウザ(Dolphin Anty、AdsPower、Multilogin、GoLogin)を使用する仲介者やSMM専門家にとって特に危険です。ブラウザがQUICをプロキシを通さずに漏らすと、FacebookやGoogle Adsのようなプラットフォームは、設定が正しくても実際のIPで複数のアカウントを関連付ける可能性があります。したがって、ほとんどの現代のアンチデテクトブラウザはQUICを強制的に無効にするか、HTTPプロキシ用にUDPをブロックします — しかし、通常のChromeでプロキシを手動で設定する場合は、自分で注意する必要があります。
SOCKS5とUDP ASSOCIATE: その仕組み
SOCKS5はHTTPよりも低レベルのプロキシプロトコルです。特定のアプリケーションプロトコル(HTTP、FTPなど)に結びついておらず、ソケットレベルで動作するため、TCPトラフィックとUDPトラフィックの両方を通過させることができます。SOCKS5の仕様(RFC 1928)には、プロキシサーバーを通じてUDPデータグラムを通過させるために特に設計されたUDP ASSOCIATEというコマンドがあります。
これは次のように機能します: クライアントはまずSOCKS5サーバーとの通常のTCP接続を確立し、UDP ASSOCIATEコマンドを送信します。サーバーは応答として、データグラムの交換が行われるUDPポートを割り当てます。次に、クライアントは各UDPパケットを特別なSOCKS5ヘッダーでラップし、このポートに送信し、サーバーはヘッダーを取り外して宛先に内容を転送します。逆方向のトラフィックも同じ方法で行われます。
重要な注意点: 市場に出回っているすべてのSOCKS5プロキシが実際にUDP ASSOCIATEをサポートしているわけではありません。多くのプロバイダーは「SOCKS5」をTCPトラフィックのための代替認証方法として販売しており、UDPの通過をまったく実装していません。したがって、ゲーム、通話、またはQUICのためにUDPサポートが必要な場合は、プロバイダーにUDP ASSOCIATEの具体的なサポートを確認してください。
安定性と最終ユーザーの実際のIPが重要なタスク — たとえば、特定の地域からのTikTok AdsやFacebook Adsの広告テスト — には、モバイルプロキシが最適です: オペレーターのネットワークとIPのローテーションは、音声通話やストリーミングを含む長時間のセッションでのブロックのリスクを減少させます。
HTTPとSOCKS5: 比較表
どのタイプのプロキシを特定のタスクに選ぶべきか混乱しないように、主要なパラメータに基づいてプロトコルを比較します。
| パラメータ | HTTP/HTTPSプロキシ | UDP ASSOCIATE付きSOCKS5 |
|---|---|---|
| TCPサポート | はい | はい |
| UDPサポート | いいえ | はい(UDP ASSOCIATEが実装されている場合) |
| QUIC/HTTP3との互換性 | HTTP/2にフォールバックまたはトラフィック漏れ | トラフィックの完全な通過 |
| ゲーム(CS、Dota、Fortnite) | 動作しない | 動作する |
| VoIP/ビデオ通話(Discord、Zoom) | 切断と遅延 | 安定した接続 |
| 通常のウェブサーフィン | 動作する | 動作する |
| アンチデテクトブラウザでの設定 | 簡単 | 簡単、すべての主要なブラウザでサポートされています |
実践: SOCKS5経由でのゲーム、通話、ストリーミング
HTTPプロキシとSOCKS5の違いが実際にどのように現れるか、具体的なシナリオを考えてみましょう。
オンラインゲーム。 マッチメイキングの地域を変更する必要がある場合や、ゲーム内の地理的制限を回避する必要がある場合、HTTPプロキシは適しません — ゲームクライアントはゲームサーバーとの通信に独自のUDPプロトコルを使用し、トラフィックはプロキシをバイパスします。UDP ASSOCIATEのサポートが確認されたSOCKS5プロキシが必要で、これはゲームの設定(そのようなオプションがある場合)またはサードパーティのトンネリングユーティリティを使用してシステムレベルで設定されます。
DiscordとZoom通話。 DiscordのテキストチャネルはHTTPS(TCP)を通じて動作し、HTTPプロキシを通過します。しかし、音声通話とビデオ通話は別のUDPチャネルを使用します — そのため、チャットには書き込めるが通話が接続できない、または音声が途切れることがよくあります。解決策は、アプリケーションのDiscordレベルで設定されたSOCKS5(設定にはSOCKS5のタイプを指定できるプロキシセクションがあります)またはプロキシクライアントを通じてシステム全体で設定されたSOCKS5です。
ストリーミングとWebRTC。 OBSのようなサービスは組み込みのWebRTC出力を使用し、ブラウザベースのビデオ通話(Google Meet、WhatsApp Web)は遅延を最小限に抑えるためにUDPを使用します。このようなタスクには、レジデンシャルプロキシが最適です — これにより、通信プロバイダーの実際のIPアドレスが提供され、「疑わしい」データセンターのアドレス範囲によるブロックの可能性が低下し、同時にUDPトラフィックを損失なく通過させます。
WebSocket/QUICエンドポイントを使用したパースと自動化。 デフォルトでHTTP/3を使用するサイトからデータをパースしている場合(Cloudflare上の多くのサイト)、HTTPプロキシ経由で不安定な応答や禁止を受ける場合は、SOCKS5を試してみてください — これにより、プロトコルの余分なフォールバックが排除され、パーサーの動作が実際のブラウザの動作に近づきます。
アプリケーションとブラウザでのSOCKS5の設定方法
SOCKS5の設定はアプリケーションによって異なります。仲介者、SMM専門家、一般ユーザーが直面する主要なオプションを見てみましょう。
アンチデテクトブラウザ(Dolphin Anty、AdsPower、GoLogin、Multilogin、Octo Browser)。 プロファイルの設定で「HTTP」の代わりに「SOCKS5」プロキシタイプを選択し、ホスト、ポート、ユーザー名、パスワードを指定します。すべてのブラウザはデフォルトでSOCKS5をサポートしており — インターフェースの違いは最小限ですが、ブラウザエンジン内のプロトコルサポートには本質的な違いがあります。
Discord。 設定 → 音声とビデオ → プロキシ。SOCKS5タイプを選択し、サーバーのアドレスとポートを入力します。プロバイダーがユーザー名とパスワードによる認証を要求する場合は、それらを対応するフィールドに入力します。
ゲームクライアントとシステムレベル。 ほとんどのゲームにはプロキシの組み込み設定がないため、プロキシクライアント(たとえば、Proxifierや同様のユーティリティ)を通じてトラフィックをシステムレベルでリダイレクトする必要があります。これにより、SOCKS5で動作し、ゲームプロセスのTCPおよびUDPパケットを通過させることができます。
Chrome/Firefoxブラウザを手動で設定。 Chromeには設定でのSOCKS5のネイティブサポートがありません — ブラウザを--proxy-server="socks5://host:port"フラグで起動するか、拡張機能を使用する必要があります。Firefoxではサポートが組み込まれています: 設定 → ネットワーク → 接続設定 → プロキシの手動設定 → SOCKSホスト、SOCKS v5のバージョン、そして必ず「DNSをプロキシ経由で解決するためにSOCKS v5を使用する」にチェックを入れます — これはDNSクエリもトンネルを通過するために重要です。
コード例: SOCKS5経由でのUDPチェック
プロキシが実際にUDPを通過させているかどうかを確認したい開発者のために、いくつかの実用的な例を示します。
curlを使用してSOCKS5経由でTCP接続を確認:
curl -x socks5h://user:pass@proxy_host:1080 https://ifconfig.me
PythonでPySocksライブラリを使用して、ソケットをSOCKS5トンネルにラップし、UDPモードを含む:
import socks
import socket
s = socks.socksocket(socket.AF_INET, socket.SOCK_DGRAM)
s.set_proxy(socks.SOCKS5, "proxy_host", 1080, username="user", password="pass")
s.sendto(b"ping", ("8.8.8.8", 53))
data, addr = s.recvfrom(1024)
print(data)
サーバーがUDP ASSOCIATEをサポートしている場合、応答を受け取ります。ライブラリが接続エラーやタイムアウトを投げる場合 — 特定のプロキシはSOCKS5のTCP部分のみを実装しており、ゲームや通話には適していません。QUICエンドポイントの自動テストには、curl --http3をSOCKS5トンネルと組み合わせて使用し、HTTP/3をサポートするcurlのバージョンがインストールされていることを確認してください。
UDPトラフィック用プロキシ選択のチェックリスト
- プロバイダーに「SOCKS5があるかどうか」だけでなく、UDP ASSOCIATEコマンドの具体的なサポートを確認してください;
- ゲームやVoIP通話の場合、事前に接続をテストしてください — 実際のpingと安定性は、宣言された速度よりも重要です;
- アンチデテクトブラウザでのマルチアカウントタスクの場合、QUICが無効になっているか、完全にプロキシを通過することを確認してください — さもなければ、実際のIPが漏れる可能性があります;
- ストリーミングやビデオ通話の場合、必要な地域までのpingが低いプロキシを優先してください — このようなシナリオには、レジデンシャルプロキシが適しています。これらは通信プロバイダーの実際のIPアドレスを使用します;
- タスクがUDPを必要としない迅速なパース(通常のHTTP/HTTPSリクエスト)である場合、より安価で迅速なデータセンタープロキシで済むことがあります — この場合、UDPサポートに対して余分に支払う必要はありません;
- 大規模な使用の前に、特定のアプリケーションでプロキシを必ずテストしてください — 「常に動作する」プロキシは存在せず、プロバイダー側の実装によって動作が異なります。
結論
HTTPプロキシは通常のウェブトラフィックに対しては優れた性能を発揮しますが、構造的にUDPを通過させることができないため、ゲーム、VoIP通話、ストリーミング、現代のQUIC/HTTP3には適していません。通話の切断、ゲームのラグ、またはプロキシ経由でのCloudflareサイトの奇妙な動作に直面した場合、それは接続の質ではなく、プロキシプロトコル自体の問題です。解決策は、事前に確認されたUDP ASSOCIATEのサポートを持つSOCKS5です。
ビデオ通話、ストリーミング、またはトラフィックの漏洩を防ぐことが重要なアンチデテクトブラウザの作業に関連する場合は、モバイルプロキシに注目してください — オペレーターのIPアドレスはプラットフォームの信頼性を高め、SOCKS5とUDPを含む現代のプロトコルの安定したサポートを提供します。