テック技報最新号へ →
AIコーディング

コーディングエージェントに社内 staging・private DB を触らせるなら Cloudflare Mesh(Workers からは VPC バインディング)

VPN は対話ログインが要り、SSH トンネルは手作業、公開すれば危ない。Cloudflare Mesh はノート PC・サーバー・エージェントを1つのプライベートネットワークに入れ、ローカルの Claude Code/Codex がそのまま private IP で staging の DB や内部 API を叩けるようにする。Cloudflare 上のエージェント(Workers/Agents SDK)は vpc_networks バインディングで同じネットワークに届く。50ノード・50ユーザーまで無料。

@Cloudflare · 投稿 2026-04-14
#cloudflare#ネットワーク#セキュリティ#エージェント#workers#mcp

どんな場面で使う?

  • ローカルのコーディングエージェントに staging DB を問い合わせさせたい/デプロイ状況を見させたい
  • 自宅の Mac mini で動かしているエージェントに外出先のスマホから入りたい(公開はしたくない)
  • Workers 上のエージェントから、別クラウドの VPC にある内部 API や private MCP を呼びたい

手順

  1. ダッシュボードの Networking > Mesh で作成。サーバー/VM には Mesh node(ヘッドレスの Cloudflare One Client、旧 WARP Connector)を入れて Mesh IP をもらう
  2. ノート PC・スマホには Cloudflare One Client(旧 WARP Client)。これでローカルのエージェントも ssh 100.64.0.5 やDB接続が通る
  3. Workers/Durable Objects からは wrangler.jsonc に予約語 cf1:network で Mesh 全体をバインドする
    jsonc
    "vpc_networks": [
      { "binding": "MESH", "network_id": "cf1:network", "remote": true },
      { "binding": "AWS_VPC", "tunnel_id": "350fd307-...", "remote": true }
    ]
    ts
    const api = await env.MESH.fetch("http://10.0.1.50/api/data");          // 事前登録なしで Mesh 内のホストへ
    const db  = await env.AWS_VPC.fetch("http://internal-db.corp.local:5432"); // Tunnel 側の private DNS で解決
  4. 冗長化するなら high availability を有効にしたノードを作り、同じトークンでコネクタを複数立てる(active-passive で自動フェイルオーバー)

Mesh と Tunnel の使い分け

  • Tunnel: 外から特定の private サービス(Web サーバーや DB)へ、一方向にプロキシする
  • Mesh: 参加者同士が private IP で双方向・多対多に通信できる。サービスごとに Tunnel を作らなくてよい

注意点

  • ネットワークが制限するのは「どこへ届くか」まで。「何をしてよいか」は MCP サーバー側で絞る、という役割分担が前提
  • 現時点ではノードは同じ ID を共有しており、Gateway から見えるのは端末(人)の ID でエージェント個別の ID ではない。エージェント単位のポリシー(例: 読みはエージェント可、書きは本人のみ)は今後の予定
  • Mesh DNS(postgres-staging.mesh)・ホスト名ルーティング・コンテナ用 Docker イメージ(CI ランナーを一時的に参加させる)も「今年後半」予定で、当面は IP 指定
  • Cloudflare One の Gateway ポリシー・デバイスポスチャ・DNS フィルタは Mesh の通信にもそのまま掛かる。社外に出したくないデータは DLP をオンにする
  • 関連: エージェントの通信をプロキシ経由にして、許可したサイトにしか出られないようにする、エージェントは Mac ではなく Linux VPS で回す

出典

X の元の投稿を開く