Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

はじめに

最終更新 Markdown で表示Agent セットアップ

デバイスとサーバーがプライベート IP で互いに到達できるように、Cloudflare Mesh を設定します。

前提条件

  • Cloudflare アカウント

  • 有効なサブスクリプション(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

    Footnotes

    1. RHEL 9 以降では、cloudflare-warp をインストールする前に Extra Packages for Enterprise Linux (EPEL) リポジトリを有効にします(sudo dnf install epel-release)。EPEL はクライアント UI に必要な依存関係を提供します。

    2. Path MTU Discovery を使う場合の最小値は 1281 バイトです

Cloudflare Mesh では、Mesh ノードの デバイスプロファイルMASQUE を使うように設定されている必要があります。デバイスプロファイルが WireGuard を使う場合、ホスト名ルート、IPv6 CIDR ルート、高可用性は動きません。

参加者の種類を選ぶ

接続したい対象に応じて、登録方法を選びます。

目的 参加者の種類 登録方法 ブラウザーが必要
Linux からサービスを動かす、またはサブネットをルーティングする Mesh ノード コネクタトークン 不要
無人の Windows、macOS、または Linux デバイスを接続する ヘッドレスクライアントデバイス サービストークンと管理デプロイパラメーター 不要
ID 付きのユーザーデバイスを接続する クライアントデバイス 対話型の IdP 登録 必要

1. Mesh を設定する

ダッシュボードウィザード、または API と Terraform リソースを選びます。

セットアップウィザードは アカウントを Mesh ネットワーキング向けに設定 し、任意で Mesh ノードの作成手順も案内します。これは一度きりのセットアップです。

  1. Cloudflare ダッシュボードで、Networking > Mesh を開きます。

    Mesh を開く ↗
  2. Add a node を選びます。

  3. ノードの名前を入力します(例: web-server または staging-db)。

  4. Create node を選びます。

  5. (任意)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 --system
    curl -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-warp
    sudo warp-cli --accept-tos connector new <TOKEN> && sudo warp-cli --accept-tos connect

    RHEL 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-warp
    sudo warp-cli --accept-tos connector new <TOKEN> && sudo warp-cli --accept-tos connect
  6. 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_IDTEAM_NAMECLOUDFLARE_API_TOKEN を設定します。このプロファイルがより広いプロファイルより前に来る、未使用の precedence 値を使います。exclude フィールドは追加しないでください。デバイスプロファイルに includeexclude の両方を含めることはできません。

API レスポンスは標準の successerrorsmessagesresult フィールドを使います。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_IDMESH_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 --system
curl -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-warp
sudo warp-cli --accept-tos connector new <TOKEN> && sudo warp-cli --accept-tos connect

RHEL 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-warp
sudo 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 を使います。

2. クライアントデバイスを接続する

ラップトップまたはスマートフォンを Mesh ネットワークに接続します。

Windows、macOS、Linux

クライアントの GUI でデバイスを登録するには、次の手順を行います。

  1. Cloudflare One Client を ダウンロード してインストールします。

  2. Cloudflare One Client を起動します。

  3. What would you like to use the Cloudflare One Client for? 画面で Zero Trust security を選びます。

  4. チーム名 を入力します。

  5. 組織が求める認証手順を完了します。

    認証が完了すると、Success ページと、Cloudflare One Client を開くダイアログが表示されます。

  6. Open the Cloudflare One Client を選び、登録を完了します。

  1. Cloudflare One Client を ダウンロード してインストールします。

  2. Cloudflare One Client を起動します。

  3. メニューバーの Cloudflare ロゴを選びます。

  4. 歯車アイコンを選びます。

  5. Preferences > Account を開きます。

  6. Login with Cloudflare Zero Trust を選びます。

  7. チーム名 を入力します。

  8. 組織が求める認証手順を完了します。

    認証が完了すると、Success ページと、Cloudflare One Client を開くダイアログが表示されます。

  9. Open Cloudflare WARP.app を選び、登録を完了します。

iOS と Android

  1. Cloudflare One Agent アプリを ダウンロード してインストールします。
  2. Cloudflare One Agent アプリを起動します。
  3. Next を選びます。
  4. プライバシーポリシーを確認し、Accept を選びます。
  5. チーム名 を入力します。
  6. 組織で必要な認証手順を完了します。
  7. 認証後、Install VPN Profile を選びます。
  8. Connection request のポップアップで OK を選びます。
  9. 自動接続 を有効にしていない場合は、スイッチを手動で Connected にします。

Connected 状態になったら、デバイスはメッシュ上にあり、独自の Mesh IP を受け取ります。

3. 接続をテストする

Windows、macOS、または Linux のクライアントデバイスから、Mesh ノードまたは別の登録済みデバイスへの TCP 接続を確認します。たとえば SSH をテストします。

nc -vz <MESH-IP> 22
Test-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 devicesAssign a unique IP address to each device Mesh ネットワーキング向けのデバイス間接続を有効にします。
Gateway プロキシ Mesh サービス向けの TCP と UDP プロキシを有効にします。ICMP プロキシは任意で、pingtraceroute などの診断をサポートします。

自動化デプロイでは、デバイスプロファイルのドキュメントに 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 プロキシを構成しません。参加者を接続する前に、ダッシュボードで登録済みデバイスへの到達性をオンにします。pingtraceroute、またはその他の ICMP ベースのワークフローが必要な場合にのみ ICMP をオンにします。

既存の Cloudflare One アカウント

アカウントにすでに 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 は pingtraceroute などの診断ツールをサポートします。

トラブルシューティング

  • ノードが 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 のトラブルシューティング を参照してください。

次のステップ

役に立ちましたか?