キャプティブポータル検出
キャプティブポータルは、公共のWi-Fiネットワーク(空港、コーヒーショップ、ホテルなど)によって使用され、ユーザーがインターネットへのアクセスを許可する前に利用規約に同意したり、支払いを行ったりすることを求めます。ユーザーがWi-Fiに接続すると、キャプティブポータルはユーザーがブラウザでキャプティブポータルのログインフローを完了するまで、すべてのHTTPSトラフィックをブロックします。これにより、WARPクライアントはCloudflareに接続できなくなります。同時に、WARPはデバイス上にファイアウォールルールを作成し、すべてのトラフィックをCloudflareに送信します。したがって、ユーザーはWARPを一時的に無効にしない限り、キャプティブポータルのログイン画面にアクセスできません。
ユーザーがキャプティブポータルを通じて接続できるようにするために、管理者は以下のWARP設定を構成できます。
- キャプティブポータル検出を有効にします。これにより、WARPはネットワーク上でキャプティブポータルを検出した際に一時的にオフになります。詳細については、キャプティブポータル検出の仕組みとその制限を参照してください。
- デバイストンネルプロトコルをMASQUEに設定します。MASQUEを使用すると、WARPトラフィックは標準のHTTPSトラフィックのように見えるため、キャプティブポータルによってブロックされる可能性が低くなります。
- WARPスイッチのロックを有効にし、管理者オーバーライドを有効にします。ユーザーはIT管理者に連絡して、WARPを手動でオフにしてポータルに接続するための一時的なコードを取得できます。
- 出張する従業員のために、WARPスイッチのロックを無効にし、自動接続の期間を設定します。これにより、ユーザーはITに連絡せずにWARPを手動でオフにすることができます。
WARPがCloudflareへの接続を確立できない場合、次のことを行います。
-
システムファイアウォールを一時的に開放し、デバイスがWARPトンネルの外にトラフィックを送信できるようにします。ファイアウォールは以下のトラフィックのみを許可します:
- TCPポート
80、443、8080、および8443のHTTP/HTTPS - UDPポート
53のDNS
- TCPポート
-
一連のリクエストをキャプティブポータルテストURLに送信します。HTTPSリクエストが傍受されると、WARPはネットワークがキャプティブポータルの背後にあると判断します。
-
キャプティブポータルがリダイレクトHTTPレスポンスコード(
302、303、307、または308)を送信した場合、キャプティブポータルのログイン画面を表示するブラウザウィンドウを開きます。 -
設定されたタイムアウト期間の後に自動的にファイアウォールを再有効化します。
flowchart TB accTitle: キャプティブポータル検出 A[DNSリクエストを送信] --成功--> B[HTTPSリクエストを送信]--失敗--> C[HTTPリクエストを送信] --成功--> D[キャプティブポータルが検出されました]--HTTPリダイレクトを受信-->I[キャプティブポータルのログインにリダイレクト] A --失敗--> F(CF_NO_NETWORKエラー) C --失敗--> F B --成功--> G[キャプティブポータルなし]--> H[Cloudflareへの接続を再試行]
-
キャプティブポータル検出の仕組みにより、従業員がWARPをオフにするためにキャプティブポータルを偽装することが可能な場合があります。
-
一部のキャプティブポータル、特に航空会社のものは、応答が遅く、キャプティブポータル検出のタイムアウトを超える可能性があります。ユーザーは接続を試みるとCF_CAPTIVE_PORTAL_TIMED_OUTエラーを見ることになるでしょう。
-
WARPは、ログインプロセス中にユーザーを異なるネットワークにリダイレクトするマルチステージキャプティブポータルを検出できない場合があります。ユーザーはキャプティブポータルを通過するためにWARPを手動でオフにする必要があります。
-
一部の公共Wi-FiネットワークはWARPの実行と互換性がありません:
- すべてのDNSトラフィックを傍受するキャプティブポータルは、WARPのDoH接続をブロックします。ユーザーはキャプティブポータルにログインした後、CF_NO_NETWORKエラーを見ることになるでしょう。
- HTTPSトラフィックのみを許可するキャプティブポータルは、WARPのWireguard UDP接続をブロックします。ユーザーはキャプティブポータルにログインした後、CF_HAPPY_EYEBALLS_MITM_FAILUREエラーを見ることになるでしょう。