Cloudflare Workers VPCを活用してオリジン隠蔽化をしよう
はじめに
Cloudflareを導入すればドメインで返されるIPアドレスはCloudflareのものになります。
しかし、それだけではオリジンIPの完全な隠蔽とは言えません。
過去のDNS履歴データベース、DNS-onlyレコードからの推測など
攻撃者がオリジンIPを特定する手段は複数存在します。
IPが特定されれば、Cloudflareを迂回した直接攻撃が可能になり、
DDoS防御もWAFも意味をなさなくなります。
そこで、2025年に公開された「Workers VPC」を活用し、
パブリックIPを一切持たない——つまり、攻撃者が特定すべきIPアドレス自体が
存在しないアーキテクチャを構築する方法を解説します。
Cloudflare Workers VPCとは?
Workers VPCは、Cloudflare WorkersからプライベートネットワークのAPIや
サービスに安全に接続するための機能です。
従来のCloudflare Tunnelが「プライベートなサービスをパブリックに公開する」
ためのものだったのに対し、Workers VPCは「プライベートなサービスを
プライベートなまま、Workerからのみアクセス可能にする」という
アプローチを取ります。
つまり、オリジンサーバーはインターネットに公開されず、
Cloudflare Worker経由でのみアクセスできる状態を作り出せます。
Workers VPC + プライベートなNGINXでやってみる

Workers VPC Create Tunnel - cloudflaredを用意

Workers VPC - プライベートなリソースをTunnel経由で指定

Workers VPC +Binding
"vpc_services": [
{
"binding": "VPC_SERVICE",
"service_id": "019a56b5-a166-71c2-b0c9-xxxxxxxx",
"remote": true
}
]
export default {
async fetch(request, env) {
const privateRequest = new Request("http://192.168.0.59/");
const response = await env.VPC_SERVICE.fetch(privateRequest);
return response;
},
};
% npx wrangler@latest deploy
⛅️ wrangler 4.51.0
───────────────────
✔ Select an account › Demo Account
Total Upload: 0.29 KiB / gzip: 0.22 KiB
Your Worker has access to the following bindings:
Binding Resource
env.VPC_SERVICE (019a56b5-a166-71c2-b0c9-xxxxxxx) VPC Service
Uploaded vpc-nginx (4.45 sec)
Deployed vpc-nginx triggers (1.14 sec)
https://vpc-nginx.taka9034.workers.dev
Current Version ID: 44fb6bdc-6926-4d91-xxxxxxx
ブラウザから確認

まとめ
Workers VPCは、オリジン隠蔽の概念を「Public IPを持たない」へと進化させています。
従来のAuthenticated Origin PullsやCloudflare IP許可リストは、
オリジンIPが露出した場合の「防御策」でした。
一方、Workers VPCは露出するIPアドレス自体を排除する根本的解決です。
もちろん、すべてのユースケースにWorkers VPCが適しているわけではありません。
WebSocketの長時間接続や、大容量ファイルの配信など、
Workerを経由させることでオーバーヘッドが生じるケースもあります。
しかし、API駆動のアプリケーション、マイクロサービスアーキテクチャ、
内部ツールやダッシュボードなど、多くの開発プロジェクトにおいて
Workers VPCは最もセキュアなオリジン保護を提供します。

Cloudflare CDNでもTunnelやIPsecトンネルを使ったオリジン隠蔽化も可能ですが
より手軽にできるWorkers VPCを活用していただけます。
*2025/12/2 現在ベータ版として全Workersプランでご提供中です。
Discussion