ERR_TUNNEL_CONNECTION_FAILED とは?原因と解決方法

Advertisement
ERR_TUNNEL_CONNECTION_FAILED とは?
ERR_TUNNEL_CONNECTION_FAILED は、ブラウザがプロキシサーバーを使っているときにだけ発生する Chrome と Edge のエラーです。Chromium のソースコードでは、ネットエラー -111 を「プロキシ経由のトンネル接続を確立できなかった」(A tunnel connection through the proxy could not be established.)と説明しています。専用のエラーページはないため、汎用のページが表示されます。「このサイトにアクセスできません。… のウェブページは一時的に停止しているか、新しいウェブアドレスに完全に移動した可能性があります。」という文言の下に、ERR_TUNNEL_CONNECTION_FAILED が表示されます。
この汎用の文言は誤解を招きます。ウェブサイト自体はたいてい正常です。障害はその一歩手前、ブラウザと、通信を中継するはずのプロキシとの間で起きています。
このエラーが表示される人の多くは、自分がプロキシを使っていることすら知りません。VPN アプリ、ブラウザの拡張機能、ネットワーク上の自動構成スクリプト、アドウェアが、知らないうちにプロキシを有効にすることがあるからです。そのため、Chrome が実際にどのプロキシを使っているかを確認するのが最初のステップです。
プロキシトンネルの仕組み(と失敗するケース)
HTTPS の通信はエンドツーエンドで暗号化されているため、通常のウェブプロキシは中身を読めません。そこでブラウザは、特別なリクエストを使って、プロキシに素通しのトンネルを開くよう依頼します。
CONNECT example.com:443 HTTP/1.1
Host: example.com:443
HTTP/1.1 200 Connection established <- トンネル確立。HTTPS はここを通る
HTTP/1.1 403 Forbidden <- またはプロキシが拒否:ERR_TUNNEL_CONNECTION_FAILEDプロキシが成功以外の応答を返した場合、たとえばサイトがブロックされていて 403 を返したときや、プロキシ自身がサイトに到達できずに 502 を返したときには、Chrome は接続をあきらめて ERR_TUNNEL_CONNECTION_FAILED を表示します。
Advertisement
ERR_TUNNEL_CONNECTION_FAILED の原因
| 原因 | 典型的な手がかり |
|---|---|
| Windows や macOS に残った古い、または誤ったプロキシ設定 | すべてのブラウザで、すべての HTTPS サイトが失敗する |
| Chrome のプロキシ拡張機能や VPN 拡張機能 | Chrome では失敗するが Firefox では表示される。シークレットモードでも表示される |
| 停止したプロキシを指すプロキシ自動構成(PAC/WPAD) | 特定のネットワーク(多くは社内ネットワーク)でだけ失敗する |
| 職場や学校のプロキシがサイトをブロックしている | 一部のサイトだけが失敗し、それ以外は問題ない |
| プロキシサーバーの停止や過負荷 | そのネットワークの全員が影響を受ける |
| プロキシを設定したアドウェアやマルウェア | 見覚えのないプロキシが何度も復活する |
解決策1:Chrome が実際に使っているプロキシを確認する
アドレスバーで chrome://net-internals/#proxy を開き、Re-apply settings と Clear bad proxies をクリックしてから、サイトを再読み込みします。現在このページにはプロキシそのものは表示されません。自動構成スクリプトを含め、Chrome が実際に使っている有効なプロキシ設定(effective proxy settings)を確認するには、chrome://net-export でログを保存し、NetLog ビューア(netlog-viewer.appspot.com)で開いて Proxy の項目を見てください。
「Use DIRECT connections」と表示されるか、プロキシが表示されない場合、原因はプロキシではありません。代わりに、ネットワークがサイトをブロックしていないかを確認しましょう。見覚えのないプロキシや PAC スクリプトが表示された場合は、解決策2と解決策3に進んで、その出どころを突き止めます。自分の IP アドレス確認ページを開くのも有効です。表示される所在地や ISP が自分のものでなければ、通信はプロキシか VPN を経由しています。
Advertisement
解決策2:システムのプロキシをオフにする(プロキシを使っていない場合)
Chrome と Edge は、オペレーティングシステムのプロキシ設定を使います。意図的にプロキシを使っていないなら、オフにしましょう。
Windows 11: 設定 → ネットワークとインターネット → プロキシ。「手動プロキシ セットアップ」で プロキシ サーバーを使う をオフにします。「自動プロキシ セットアップ」では 設定を自動的に検出する はオンのままにし、組織から指定されていない限り セットアップ スクリプトを使う をオフにします。
macOS: システム設定 → ネットワーク → 使用中の接続 → 詳細... → プロキシ。必要なものを除き、「自動プロキシ構成」を含むすべてのプロキシをオフにします。
:: Windows にはシステムサービス用の別のプロキシ(WinHTTP)もあります
netsh winhttp show proxy
netsh winhttp reset proxy解決策3:拡張機能、VPN アプリ、Chrome のポリシーを確認する
拡張機能:
chrome://settings/systemを開きます。拡張機能がプロキシを制御している場合、Chrome にはその拡張機能が設定を管理している旨の注記が、無効にするボタンとともに表示されます。表示されない場合は、chrome://extensionsでプロキシや VPN の拡張機能を1つずつ無効にします。VPN アプリ: VPN アプリの中には、完全な VPN ではなくローカルプロキシとして動作するものがあります。切断するだけでなくアプリを完全に終了してから、再読み込みしてください。
ポリシー:
chrome://policyを開きます。ProxyMode、ProxyServer、ProxyPacUrl などのプロキシ関連ポリシーが表示される場合は、組織またはインストール済みのソフトウェアがプロキシを強制しているため、その発生元で変更する(または IT 部門に依頼する)必要があります。
Advertisement
解決策4:ネットワーク設定をリセットし、DNS をフラッシュする
プロキシ設定に問題が見当たらないのにエラーが続く場合は、ネットワーク構成をリセットします。Windows では、管理者として開いたコマンドプロンプトで以下のコマンドを実行してから再起動します。Mac では、ネットワークを削除して追加し直し、DNS キャッシュをフラッシュしてください。
ipconfig /flushdns
netsh winsock reset
netsh int ip reset
netsh winhttp reset proxy解決策5:職場や学校のネットワークでは、回避する前に確認する
企業や学校のネットワークではプロキシの使用が必須なことが多く、その多くがプロキシを使って特定カテゴリーのウェブサイトをブロックしています。一部のサイトだけが ERR_TUNNEL_CONNECTION_FAILED で失敗し、それ以外はすべて正常なら、プロキシが意図的にそれらのサイトをブロックしている可能性が非常に高いでしょう。
こうしたネットワークでは直接接続もブロックされているため、プロキシをオフにしても通常は解決しません。IT チームにサイトを許可できるか問い合わせるか、別のネットワークからサイトを利用してください。
Advertisement
プロキシ管理者の方へ
プロキシが CONNECT リクエストにどう応答しているかを正確に把握するには、クライアントマシンから curl で再現します。
curl -v -x http://proxy.example.com:3128 https://example.com/ -o /dev/null
# 成功: "HTTP/1.1 200 Connection established"
# 失敗: "CONNECT tunnel failed, response 403"
# (古い curl: "Received HTTP code 403 from proxy after CONNECT")403 はアクセスルール、407 は認証、502/503 はプロキシが宛先に到達できないこと(プロキシ自身の DNS と送信側のファイアウォールを確認)を示します。Squid のデフォルト設定では、http_access deny CONNECT !SSL_ports によって SSL_ports リスト(デフォルトは 443)にないポートへの CONNECT が拒否されるため、8443 などのポートで動く HTTPS サイトは、リストに追加するまで失敗します。宛先ポートにそもそも外部から到達できるかどうかは、DNS Robot のポートチェッカーで確認できます。
ERR_TUNNEL_CONNECTION_FAILED と似たエラーの違い
| エラー | コード | 失敗した箇所 |
|---|---|---|
| ERR_TUNNEL_CONNECTION_FAILED | -111 | プロキシが HTTPS トンネルを開けなかった、または開くことを拒否した |
| ERR_PROXY_CONNECTION_FAILED | -130 | Chrome がプロキシサーバー自体に接続できなかった |
| ERR_CONNECTION_RESET | -101 | 確立済みの接続が TCP リセットで断ち切られた |
| ERR_NAME_NOT_RESOLVED | -105 | DNS がドメインを見つけられなかった |
関連ガイド:ERR_CONNECTION_RESET、ERR_NETWORK_CHANGED、ERR_NAME_NOT_RESOLVED。
通信はプロキシを経由している?
DNS Robot の「自分の IP アドレス確認」は、ウェブサイトから見えるパブリック IP アドレス、ISP、所在地を表示します。それが自分の回線と一致しなければ、経路上にプロキシか VPN があります。
試す 自分の IP アドレス確認Advertisement
よくある質問
Chrome がプロキシサーバーを使っていて、そのプロキシが HTTPS サイトに必要なトンネルを開けなかった、または開くことを拒否したという意味です。Chromium ではネットエラー -111 にあたります。ウェブサイト自体はたいてい正常で、問題はプロキシかプロキシ設定にあります。