デバイスとサーバーがプライベート IP で互いに到達できるように、Cloudflare Mesh を設定します。
-
有効なサブスクリプション(Free プランを含む)を持つ Zero Trust 組織
-
クライアントデバイスとして接続するラップトップまたはスマートフォン
-
(任意)Mesh ノードをデプロイする Linux サーバー
Linux サーバーの要件
OS バージョン RHEL 9 1, RHEL 10, Debian 12, Debian 13, Fedora 43, Fedora 44, Ubuntu 22.04 LTS, Ubuntu 24.04 LTS, Ubuntu 26.04 LTS プロセッサ AMD64 / x86-64 または ARM64 / AArch64 ディスク容量 75 MB メモリ 35 MB ネットワークインターフェイスの種類 Wi-Fi または LAN MTU 1381 バイトを推奨 2 -
RHEL 9 以降では、
cloudflare-warpをインストールする前に Extra Packages for Enterprise Linux (EPEL) ↗ リポジトリを有効にします(sudo dnf install epel-release)。EPEL はクライアント UI に必要な依存関係を提供します。 ↩ -
Path MTU Discovery を使う場合の最小値は 1281 バイトです ↩
-
Cloudflare Mesh では、Mesh ノードの デバイスプロファイル が MASQUE を使うように設定されている必要があります。デバイスプロファイルが WireGuard を使う場合、ホスト名ルート、IPv6 CIDR ルート、高可用性は動きません。
接続したい対象に応じて、登録方法を選びます。
| 目的 | 参加者の種類 | 登録方法 | ブラウザーが必要 |
|---|---|---|---|
| Linux からサービスを動かす、またはサブネットをルーティングする | Mesh ノード | コネクタトークン | 不要 |
| 無人の Windows、macOS、または Linux デバイスを接続する | ヘッドレスクライアントデバイス | サービストークンと管理デプロイパラメーター | 不要 |
| ID 付きのユーザーデバイスを接続する | クライアントデバイス | 対話型の IdP 登録 | 必要 |
ダッシュボードウィザード、または API と Terraform リソースを選びます。
セットアップウィザードは アカウントを Mesh ネットワーキング向けに設定 し、任意で Mesh ノードの作成手順も案内します。これは一度きりのセットアップです。
-
Cloudflare ダッシュボードで、Networking > Mesh を開きます。
Mesh を開く ↗ -
Add a node を選びます。
-
ノードの名前を入力します(例:
web-serverまたはstaging-db)。 -
Create node を選びます。
-
(任意)Linux サーバーがある場合は、ダッシュボードに表示されるインストールコマンドを実行してノードをオンラインにします。サーバーの準備ができていない場合は I'll connect later を選びます。ノード詳細ページからいつでもインストールできます。
インストールコマンド
ノードに Mesh IP で到達するには、IP 転送は不要です。ノードが CIDR ルート を広報する場合は、接続する前に永続的な転送を有効にします。
printf 'net.ipv4.ip_forward = 1\nnet.ipv6.conf.all.forwarding = 1\nnet.ipv6.conf.all.accept_ra = 2\n' | sudo tee /etc/sysctl.d/99-zzz-cloudflare-warp-connector.conf && sudo sysctl --systemcurl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor -o /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg && echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(. /etc/os-release && echo $VERSION_CODENAME) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list && sudo apt-get update -qq && sudo apt-get install -y -qq cloudflare-warpsudo warp-cli --accept-tos connector new <TOKEN> && sudo warp-cli --accept-tos connectRHEL 9 以降では、
cloudflare-warpをインストールする前に Extra Packages for Enterprise Linux(EPEL)リポジトリを有効にします。EPEL は Cloudflare One Client UI が必要とする依存関係を提供します。sudo dnf install -y epel-release次にパッケージをインストールします。
curl -fsSl https://pkg.cloudflareclient.com/cloudflare-warp-ascii.repo | sudo tee /etc/yum.repos.d/cloudflare-warp.repo && sudo yum install -y cloudflare-warpsudo warp-cli --accept-tos connector new <TOKEN> && sudo warp-cli --accept-tos connect -
View node details を選び、セットアップウィザードを完了します。
ノードをインストールした場合は、Mesh 概要ページで Online と表示され、割り当てられた Mesh IP も表示されます。ノードがオンラインにならない場合は トラブルシューティング を参照してください。
ダッシュボードウィザードは必須ではありません。アカウントのブートストラップ後、API と Terraform で対応する Mesh リソースを自動化できます。アカウント ID、Zero Trust のチーム名、jq、設定するリソースの権限を持つ API トークン が必要です。
続ける前に、必要なアカウント設定 のすべての項目を構成します。このセクションの例では、Mesh ノードのデバイスプロファイル、ノード、コネクタトークンを設定します。デバイス登録とグローバル設定は別に構成する必要があります。Allow all Cloudflare One traffic to reach enrolled devices と ICMP Gateway プロキシはダッシュボードでの設定が必要です。
ノードを接続する前に、安全な Include モードのプロファイルを作成します。このリクエストには Zero Trust Write 権限が必要です。Mesh ノードに一致し、Traffic and DNS モードで MASQUE を使い、Mesh IP 範囲だけを Cloudflare 経由でルーティングします。
set -euo pipefail
PROFILE_RESPONSE=$(
curl --fail-with-body --silent --show-error \
"https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/devices/policy" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--header "Content-Type: application/json" \
--data "$(jq -n \
--arg match "identity.email == \"warp_connector@$TEAM_NAME.cloudflareaccess.com\"" \
'{
name: "Cloudflare Mesh nodes",
description: "Route Mesh IP traffic through Cloudflare",
enabled: true,
precedence: 100,
match: $match,
service_mode_v2: {mode: "warp"},
tunnel_protocol: "masque",
include: [{address: "100.96.0.0/12", description: "Cloudflare Mesh IPs"}]
}')"
)
jq -e '.success == true and (.result.id | type == "string")' \
<<< "$PROFILE_RESPONSE" > /dev/null
PROFILE_ID=$(jq -r '.result.id' <<< "$PROFILE_RESPONSE")コマンドを実行する前に、シェルで ACCOUNT_ID、TEAM_NAME、CLOUDFLARE_API_TOKEN を設定します。このプロファイルがより広いプロファイルより前に来る、未使用の precedence 値を使います。exclude フィールドは追加しないでください。デバイスプロファイルに include と exclude の両方を含めることはできません。
API レスポンスは標準の success、errors、messages、result フィールドを使います。2xx 以外のレスポンスでは curl が失敗します。success: false のレスポンス、または result.id がない場合は jq が失敗します。コマンドがゼロを返し、PROFILE_ID が設定されるまで続けないでください。
次のリクエストには、Cloudflare One Connectors Write または Cloudflare One Connector: WARP Write 権限を持つ API トークンが必要です。Mesh ノードを作成し、そのコネクタトークンを取得するには:
set -euo pipefail
NODE_RESPONSE=$(
curl --fail-with-body --silent --show-error \
"https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/warp_connector" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--header "Content-Type: application/json" \
--data '{"name":"web-server"}'
)
jq -e '.success == true and (.result.id | type == "string")' \
<<< "$NODE_RESPONSE" > /dev/null
NODE_ID=$(jq -r '.result.id' <<< "$NODE_RESPONSE")
TOKEN_RESPONSE=$(
curl --fail-with-body --silent --show-error \
"https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/warp_connector/$NODE_ID/token" \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
)
MESH_NODE_TOKEN=$(jq -er \
'select(.success == true) | .result | select(type == "string" and length > 0)' \
<<< "$TOKEN_RESPONSE")コマンドは HTTP または API エラーで停止します。ゼロを返し、NODE_ID と MESH_NODE_TOKEN が設定されるまで続けないでください。ノード作成後にトークン取得が失敗した場合は、既存の NODE_ID でトークンリクエストだけを再試行します。ノード作成リクエストは再実行しないでください。
ノードをインストールし、<TOKEN> を MESH_NODE_TOKEN の値に置き換えます。
ノードに Mesh IP で到達するには、IP 転送は不要です。ノードが CIDR ルート を広報する場合は、接続する前に永続的な転送を有効にします。
printf 'net.ipv4.ip_forward = 1\nnet.ipv6.conf.all.forwarding = 1\nnet.ipv6.conf.all.accept_ra = 2\n' | sudo tee /etc/sysctl.d/99-zzz-cloudflare-warp-connector.conf &&
sudo sysctl --systemcurl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor -o /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg &&
echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(. /etc/os-release && echo $VERSION_CODENAME) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list &&
sudo apt-get update -qq && sudo apt-get install -y -qq cloudflare-warpsudo warp-cli --accept-tos connector new <TOKEN> && sudo warp-cli --accept-tos connectRHEL 9 以降では、cloudflare-warp をインストールする前に Extra Packages for Enterprise Linux(EPEL)リポジトリを有効にします。EPEL は Cloudflare One Client UI が必要とする依存関係を提供します。
sudo dnf install -y epel-release次にパッケージをインストールします。
curl -fsSl https://pkg.cloudflareclient.com/cloudflare-warp-ascii.repo | sudo tee /etc/yum.repos.d/cloudflare-warp.repo &&
sudo yum install -y cloudflare-warpsudo warp-cli --accept-tos connector new <TOKEN> && sudo warp-cli --accept-tos connectノードは cloudflare_zero_trust_tunnel_warp_connector ↗ リソースでも管理できます。ノード構成の管理には cloudflare_zero_trust_tunnel_warp_connector_config ↗ を使います。
ラップトップまたはスマートフォンを Mesh ネットワークに接続します。
クライアントの GUI でデバイスを登録するには、次の手順を行います。
-
Cloudflare One Client を ダウンロード してインストールします。
-
Cloudflare One Client を起動します。
-
What would you like to use the Cloudflare One Client for? 画面で Zero Trust security を選びます。
-
チーム名 を入力します。
-
組織が求める認証手順を完了します。
認証が完了すると、Success ページと、Cloudflare One Client を開くダイアログが表示されます。
-
Open the Cloudflare One Client を選び、登録を完了します。
-
Cloudflare One Client を ダウンロード してインストールします。
-
Cloudflare One Client を起動します。
-
メニューバーの Cloudflare ロゴを選びます。
-
歯車アイコンを選びます。
-
Preferences > Account を開きます。
-
Login with Cloudflare Zero Trust を選びます。
-
チーム名 を入力します。
-
組織が求める認証手順を完了します。
認証が完了すると、Success ページと、Cloudflare One Client を開くダイアログが表示されます。
-
Open Cloudflare WARP.app を選び、登録を完了します。
- Cloudflare One Agent アプリを ダウンロード してインストールします。
- Cloudflare One Agent アプリを起動します。
- Next を選びます。
- プライバシーポリシーを確認し、Accept を選びます。
- チーム名 を入力します。
- 組織で必要な認証手順を完了します。
- 認証後、Install VPN Profile を選びます。
- Connection request のポップアップで OK を選びます。
- 自動接続 ↗ を有効にしていない場合は、スイッチを手動で Connected にします。
Connected 状態になったら、デバイスはメッシュ上にあり、独自の Mesh IP を受け取ります。
Windows、macOS、または Linux のクライアントデバイスから、Mesh ノードまたは別の登録済みデバイスへの TCP 接続を確認します。たとえば SSH をテストします。
nc -vz <MESH-IP> 22Test-NetConnection <MESH-IP> -Port 22<MESH-IP> は Mesh 概要ページに表示される Mesh IP に置き換えます。ポート 22 はサービスが使うポートに置き換えます。モバイルブラウザーから HTTP サービスをテストできます。接続済みクライアントまたは正常なコネクタ状態だけでは、ピア接続は検証されません。使いたいアプリケーションプロトコルを検証してください。ICMP Gateway プロキシをオンにしている場合は、診断チェックとして ping <MESH-IP> も実行できます。
Mesh ノードからのトラフィックは、Gateway アクティビティログ に ID warp_connector@<your-team-name>.cloudflareaccess.com で表示されます。クライアントデバイスのトラフィックは、登録済みユーザーの ID で Gateway アクティビティログに表示されます。
ダッシュボードウィザードは、新規導入向けに次の Cloudflare One 設定を自動で構成します。ウィザードを使わない導入では、同じ設定を構成する必要があります。
| 設定 | 役割 |
|---|---|
| デバイス登録ポリシー | メールベースの ワンタイム PIN を使って、デバイスを Cloudflare One アカウントに登録できるようにします。アカウントに既存のデバイス登録ポリシーがない場合にのみ作成されます。 |
| デバイスプロファイル | Include モード の Split Tunnels で構成したプロファイルを作成し、Mesh トラフィックだけが Cloudflare 経由になるようにします。サーバー上の既存のネットワーク接続を壊さないためです。アカウントにアクティブな Mesh ノード(旧 WARP Connector)がない場合にのみ作成されます。 |
| Allow all Cloudflare One traffic to reach enrolled devices と Assign a unique IP address to each device | Mesh ネットワーキング向けのデバイス間接続を有効にします。 |
| Gateway プロキシ | Mesh サービス向けの TCP と UDP プロキシを有効にします。ICMP プロキシは任意で、ping や traceroute などの診断をサポートします。 |
自動化デプロイでは、デバイスプロファイルのドキュメントに API と Terraform の例があります。service_mode_v2 = { mode = "warp" } を設定し、一般的な例の wireguard プロトコルを tunnel_protocol = "masque" に置き換え、Split Tunnels で 100.96.0.0/12 を Cloudflare 経由にします。Mesh ノードは identity.email == "warp_connector@<TEAM_NAME>.cloudflareaccess.com" で一致させ、このプロファイルをより広いプロファイルより前に置きます。デバイス登録のドキュメントには、Terraform の登録ポリシーフローがあります。
cloudflare_zero_trust_device_settings ↗ リソースは、一意のデバイス IP と TCP / UDP の Gateway プロキシに対応しています。
resource "cloudflare_zero_trust_device_settings" "mesh" {
account_id = var.cloudflare_account_id
use_zt_virtual_ip = true
gateway_proxy_enabled = true
gateway_udp_proxy_enabled = true
}Terraform リソースは Allow all Cloudflare One traffic to reach enrolled devices や ICMP Gateway プロキシを構成しません。参加者を接続する前に、ダッシュボードで登録済みデバイスへの到達性をオンにします。ping、traceroute、またはその他の ICMP ベースのワークフローが必要な場合にのみ ICMP をオンにします。
アカウントにすでに Cloudflare One の導入がある場合、セットアップウィザードは既存の構成を上書きしません。Mesh が動くように、次の設定が有効であることを確認してください。
- デバイス登録 — デバイスとノードがアカウントに登録できるように、少なくとも 1 つの 登録ルール が必要です。
- Mesh ノード向けデバイスプロファイル — Mesh ノードには、Mesh IP 範囲(
100.96.0.0/12)を Cloudflare 経由でルーティングする デバイスプロファイル が必要です。Include モードでは Mesh 範囲を追加します。Exclude モードでは、カスタムまたはレガシーのエントリが Mesh 範囲を含んでいないことを確認します。 - Mesh 接続 — デバイスプロファイル設定で、Allow all Cloudflare One traffic to reach enrolled devices を有効にします。
- 一意のデバイス IP — 各参加者がルーティング可能な Mesh IP を受け取れるように、Assign a unique IP address to each device を有効にします。
- クライアントモード — Mesh ノードは Traffic and DNS モード で動かす必要があります。DNS only またはプロキシのみのモードには対応していません。
- トラフィックプロキシ — 使うプロトコル向けに Gateway プロキシ をオンにします。TCP と UDP が Mesh サービスを運びます。ICMP は
pingやtracerouteなどの診断ツールをサポートします。
- ノードが Offline と表示される — サーバーで
warp-cli statusを実行します。出力にStatus update: Connectedが表示されない場合:warp-cli connectを実行します。- プライベートネットワークがファイアウォールでインターネットトラフィックを制限している場合は、WARP のポートと IP を許可していることを確認します。
- 接続失敗の理由について、WARP デーモンログ を確認します。
- クライアントデバイスが Mesh IP に到達できない — Split Tunnel 構成が Mesh IP 範囲(
100.96.0.0/12)を Cloudflare 経由でルーティングしていることを確認します。詳細は クライアントデバイスを接続する を参照してください。 - Windows ファイアウォールが Mesh トラフィックをブロックする — Windows Firewall はデフォルトで
100.96.0.0/12からの受信トラフィックをブロックします。目的のプロトコルとポート向けに、この範囲からの受信リクエストを許可するファイアウォールルールを追加します。
一般的なクライアントの問題は Cloudflare One Client のトラブルシューティング を参照してください。
- クライアントデバイスを接続する — プラットフォーム別のインストール詳細、Split Tunnel 構成、ファイアウォールの考慮事項。
- Docker / Kubernetes で実行する — Docker Compose、Kubernetes、CI/CD パイプライン向けに、Mesh ノードを Docker コンテナとしてデプロイします。
- ルートを追加する — ノード背後のサブネット全体(データベース、プリンター、その他のサーバー)を到達可能にします。
- 高可用性を有効にする — 本番の耐障害性のために複数レプリカを実行します。
- ヒントとベストプラクティス — クラウド VPC の構成、クライアントの更新、cloudflared との併用。