機能の利用可否
| クライアントモード | Zero Trust プラン ↗ |
|---|---|
| すべてのモード | すべてのプラン |
| システム | 利用可否 | 最小クライアントバージョン |
|---|---|---|
| Windows | ✅ | 2025.1.861.0 |
| macOS | ✅ | 2025.1.861.0 |
| Linux | ✅ | 2025.1.861.0 |
| iOS | ✅ | 1.0 |
| Android | ✅ | 1.0 |
| ChromeOS | ✅ | 1.0 |
Cloudflare One Client(旧称 WARP)では、デバイスがオフィスなどの既知のネットワーク所在地に接続したときに、特定の デバイスプロファイル とデバイスクライアント設定を選択的に適用できます。デバイスがどのネットワーク上にあるかを判定するため、Cloudflare One Client はそのネットワーク上でホストする TLS エンドポイントに接続し、証明書を検証します。証明書が一致すると、デバイスは管理対象ネットワーク上にあり、対応する デバイスプロファイル を受け取ります(そのネットワーク用にプロファイルを設定している場合)。
このページでは、次の内容を説明します。
- 信頼できるネットワーク上に TLS エンドポイントを作成する。
- Zero Trust で TLS エンドポイントを設定し、管理対象ネットワークを用意する。
- Cloudflare One Client が管理対象ネットワーク上だと判定したときに、適切なデバイスプロファイルを適用する。
- Cloudflare One Client は、オペレーティングシステムのデフォルトルートが変わったとき、接続中の Wi-Fi の SSID が変わったとき、またはデフォルトインターフェイスの DNS サーバーが変わったときに、管理対象ネットワークをスキャンします。性能への影響を抑えるため、所在地ごとに別の設定プロファイルが必要な場合を除き、複数拠点で同じ TLS エンドポイントを再利用してください。
- デバイスが同時に到達できる管理対象ネットワークは 1 つだけにしてください。複数の管理対象ネットワークが設定されていて到達できる場合、どの設定プロファイルが適用されるかを判定する方法はありません。
管理対象ネットワークを設定すると、Cloudflare One Client は TLS エンドポイントを使って、デバイスがそのネットワーク上にあるかを判定します。
正しいデバイスプロファイルが適用されるまでの時間は、TLS エンドポイントの応答速度に依存します。
TLS エンドポイントが 5 秒でタイムアウトすると、Cloudflare One Client はデバイスが管理対象ネットワーク上にないと判断し、デフォルトのデバイスプロファイルを適用します。検出の再試行は、タイムアウト以外のエラーが発生した場合にだけ行われます。タイムアウトすると、再試行なしでデフォルトのデバイスプロファイルにフォールバックします。
TLS エンドポイントは、TLS 証明書を提供するネットワーク上のホストです。TLS エンドポイントはネットワーク所在地のビーコンのように働きます。デバイスがネットワークに接続すると、そのデバイス上の Cloudflare One Client が TLS エンドポイントを検出し、TLS 証明書を SHA-256 フィンガープリント(指定している場合)またはローカルの証明書ストアと照合し、公開認証局の署名であるかを確認します。
TLS 証明書は、ネットワーク上の任意のデバイスでホストできます。ただし、その所在地の外にいるユーザーからはエンドポイントに到達できない必要があります。Cloudflare One Client は、ユーザーが Cloudflare Tunnel 経由でこのエンドポイントに接続できないよう、管理対象ネットワークのエンドポイントをすべてのデバイスプロファイルから自動的に除外します。リモートユーザーがアクセスする必要のない、オフィス内のプリンターなどのホストを選ぶことをおすすめします。
ネットワーク上に TLS エンドポイントがまだない場合は、次の手順で用意できます。
-
TLS 証明書を生成します。
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout key.pem -out cert.pem -subj "/CN=example.com" -addext "subjectAltName=DNS:example.com"このコマンドは PEM 形式の証明書と秘密鍵を出力します。これらのファイルは安全な場所に保管してください。
-
ネットワーク上の HTTPS サーバーが、この証明書と鍵を使うよう設定します。次の例は、Docker の nginx コンテナから TLS 証明書を提供する方法です。
a.
nginx.confという nginx 設定ファイルを作成します。nginx.conftxt events { worker_connections 1024; } http { server { listen 443 ssl; ssl_certificate /certs/cert.pem; ssl_certificate_key /certs/key.pem; location / { return 200; } } }必要に応じて、
/certs/cert.pemと/certs/key.pemを証明書と鍵の場所に置き換えます。b. Docker Compose ファイルに nginx イメージを追加します。
docker-compose.ymlyml services: nginx: image: nginx:latest ports: - 3333:443 volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro - ./certs:/certs:ro必要に応じて、
./nginx.confと./certsを nginx 設定ファイルと証明書の場所に置き換えます。c. サーバーを起動します。
docker compose up -d -
TLS サーバーが動作していることを確認するには、エンドユーザーのデバイスから curl コマンドを実行します。
curl --verbose --insecure https://<private-server-IP>:3333/自己署名証明書を使っているため、
--insecureオプションが必要です。デバイスがネットワークに接続していれば、リクエストは200ステータスコードを返す必要があります。
Windows IIS
Windows Internet Information Services(IIS)Manager で TLS エンドポイントを作成するには:
-
管理者として PowerShell を実行します。
-
自己署名証明書を生成します。
New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName "office-name.example.internal" -FriendlyName "Cloudflare Managed Network Certificate" -NotAfter (Get-Date).AddYears(10)PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\My Thumbprint Subject ---------- ------- 0660C4FCD15F69C49BD080FEEA4136B3D302B41B CN=office-name.example.internal -
証明書の SHA-256 フィンガープリントを抽出します。
[System.BitConverter]::ToString([System.Security.Cryptography.SHA256]::Create().ComputeHash((Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.FriendlyName -eq "Cloudflare Managed Network Certificate" }).RawData)) -replace "-", ""DD4F4806C57A5BBAF1AA5B080F0541DA75DB468D0A1FE731310149500CCD8662SHA-256 フィンガープリントは、Zero Trust に管理対象ネットワークを追加 するときに必要です。
New-SelfSignedCertificateコマンドが生成するデフォルトの SHA-1 サムプリントは使わないでください。 -
IIS Manager を開きます。
-
Connections ペインで Sites ノードを右クリックし、Add Website を選択します。
-
Site name に、TLS サーバーの任意の名前を入力します(例:
Managed Network Server)。 -
Physical path に、
.htmまたはhtmlファイルを含む任意のディレクトリを入力します(例:C:\inetpub\wwwroot)。Cloudflare はディレクトリ内のコンテンツを検証しません。 -
Binding で、次のフィールドを設定します。
- Type: https
- IP address: All Unassigned
- Port:
443 - Host name: 証明書の Common Name(CN)を入力します。例の証明書の CN は
office-name.example.internalです。 - Require Server Name Indication: Enabled
- SSL certificate: TLS 証明書の名前を選択します。例の証明書名は
Cloudflare Managed Network Certificateです。
-
TLS サーバーが動作していることを確認するには、エンドユーザーのデバイスから curl コマンドを実行します。
curl --verbose --insecure --resolve office-name.example.internal:443:<private-server-IP> https://office-name.example.internal自己署名証明書を使っているため、
--insecureオプションが必要です。--resolveオプションを使うと、サーバーのプライベート IP に接続しつつ、SNI と証明書検証のためにホスト名をサーバーへ渡せます。デバイスがネットワークに接続していれば、リクエストはディレクトリのデフォルトホームページ(C:\inetpub\wwwroot\iisstart.htm)を返す必要があります。
Cloudflare One Client は Rustls ↗ を使って TLS 接続を確立します。TLS エンドポイントが、Rustls が対応している暗号スイート ↗ のいずれかを受け入れることを確認してください。
SHA-256 フィンガープリントは、TLS エンドポイントが自己署名証明書を使う場合にだけ必要です。
ローカル証明書の SHA-256 フィンガープリントを取得する手順は次のとおりです。
openssl x509 -noout -fingerprint -sha256 -inform pem -in cert.pem | tr -d :出力は次のようになります。
SHA256 Fingerprint=DD4F4806C57A5BBAF1AA5B080F0541DA75DB468D0A1FE731310149500CCD8662接続をテストし、リモートサーバーの SHA-256 フィンガープリントを取得する手順は次のとおりです。
openssl s_client -connect <private-server-IP>:443 < /dev/null 2> /dev/null | openssl x509 -noout -fingerprint -sha256 | tr -d :出力は次のようになります。
SHA256 Fingerprint=DD4F4806C57A5BBAF1AA5B080F0541DA75DB468D0A1FE731310149500CCD8662-
Cloudflare ダッシュボード ↗ で、Zero Trust > Team & Resources > Devices > Device profiles に移動します。
-
Managed networks を選択し、Add new managed network を選択します。
-
ネットワーク所在地に名前を付けます。
-
Host and Port に、TLS エンドポイント のプライベート IP アドレスとポート番号を入力します(例:
192.168.185.198:3333)。 -
(任意)TLS Cert SHA-256 に、TLS 証明書の SHA-256 フィンガープリント を入力します。このフィールドは自己署名証明書の場合にだけ必要です。TLS フィンガープリントを指定しない場合、Cloudflare One Client はローカルの証明書ストアと照合し、公開認証局の署名であるかを確認します。
-
Save を選択します。
-
cloudflare_api_token↗ に次の権限を追加します。Zero Trust Write
-
cloudflare_zero_trust_device_managed_network↗ リソースで管理対象ネットワークを追加します。resource "cloudflare_zero_trust_device_managed_networks" "office" { account_id = var.cloudflare_account_id name = "Office managed network" type = "tls" config = { tls_sockaddr = "192.168.185.198:3333" sha256 = "DD4F4806C57A5BBAF1AA5B080F0541DA75DB468D0A1FE731310149500CCD8662" } }
TLS エンドポイントをプライベート IP アドレスで指定した場合、Cloudflare One Client はすべてのデバイスプロファイルからそのエンドポイントを自動的に除外します。この除外により、リモートユーザーは任意のポートで WARP トンネル経由にエンドポイントへアクセスできません。TLS エンドポイントをプライベート IP ではなくホスト名で指定した場合、Cloudflare One Client は自動では除外しません。
-
Cloudflare ダッシュボード ↗ で、Zero Trust > Team & Resources > Devices > Device profiles > General profiles に移動します。
-
新しいプロファイル を作成するか、既存のプロファイルを編集します。
-
デバイスがネットワークに接続したときにこのプロファイルを適用するには、次のルールを追加します。
セレクター 演算子 値 Managed network is <NETWORK-NAME> -
プロファイルを保存します。
cloudflare_zero_trust_device_custom_profile ↗ で、network セレクターを使った match 式を設定します。次のデバイスプロファイルは、特定の管理対象ネットワークに接続しているすべてのデバイスに一致します。
resource "cloudflare_zero_trust_device_custom_profile" "office" {
account_id = var.cloudflare_account_id
name = "Office"
description = "Devices connected to the office network"
precedence = 1
service_mode_v2 = {mode = "warp"}
match = trimspace(replace(<<-EOT
network == "${cloudflare_zero_trust_device_managed_networks.office.name}"
EOT
, "\n", " "))
}管理対象ネットワークが有効になりました。組織内のデバイスがネットワークに接続するたび(デバイスの起動時や Wi-Fi ネットワークの変更時など)、Cloudflare One Client はネットワーク所在地を判定し、対応する設定プロファイルを適用します。
Cloudflare One Client がネットワーク所在地を検出しているかを確認するには:
- Cloudflare One Client を接続します。
- ネットワークを切断して再接続します。
- ターミナルを開き、
warp-cli debug alternate-networkを実行します。
- デバイスプロファイル — 管理対象ネットワーク経由で適用するデバイスプロファイルの作成と管理です。
- デバイスクライアント設定 — Cloudflare One Client の動作と、ユーザーができる操作を定義します。
- Cloudflare One Client トラブルシューティングガイド — よくある Cloudflare One Client の問題を解決します。