跳转到内容
搜索文档

更新日志

Cloudflare 的最新更新与改进。

通过 VPC 网络上的 connect() 进行 TCP 连接

VPC 网络(VPC Network) 绑定(binding)现在除了支持通过 fetch() 进行 HTTP 流量传输外,还支持用于指向私有目标的原始 TCP 连接的 connect() Socket API。

这意味着 Workers 现在可以向通过绑定的 Cloudflare Tunnel、Cloudflare Mesh 或 Cloudflare WAN 接入端(on-ramp)可达的任何私有服务打开 TCP 套接字 —— 包括 Redis、Memcached、MQTT、自定义二进制协议或任何其他基于 TCP 的服务。

{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "vpc_networks": [
    {
      "binding": "PRIVATE_NETWORK",
      "network_id": "cf1:network",
      "remote": true
    }
  ]
}
[[vpc_networks]]
binding = "PRIVATE_NETWORK"
network_id = "cf1:network"
remote = true

在运行时,在绑定上使用 connect() 以向私有目标打开 TCP 套接字:

export default {
	async fetch(request: Request, env: Env) {
		// Open a TCP connection to a private Redis instance
		const socket = await env.PRIVATE_NETWORK.connect("10.0.1.50:6379");

		// Write a Redis PING command
		const writer = socket.writable.getWriter();
		await writer.write(new TextEncoder().encode("PING\r\n"));
		await writer.close();

		return new Response(socket.readable);
	},
};

有关更多详细信息,请参阅 VPC 网络(VPC Networks)Workers 绑定(Binding)API

使用 Gateway 策略过滤 Workers 的公共互联网流量

使用 VPC 网络(VPC Network) 绑定(binding)与 network_id: "cf1:network" 的 Workers 现在可以通过 Cloudflare Gateway 出口到公共互联网目标。这意味着您现有的 Zero Trust 流量策略 —— DNS、HTTP、网络和出口(egress)—— 将延伸到源自您的 Workers 的流量,就像今天对 WARP 用户所做的那样。

  1. Calls env.EGRESS.fetch()

  2. VPC binding
  3. Public Internet

    Any public hostname or IP

Gateway logsDNSHTTPNetwork

您默认获得的内容:

  • 可见性。 Worker 出口流量与您的其他流量一起显示在 Gateway DNSHTTP网络 日志中,以便您可以审计您的 Workers 在何时调用了什么。
  • 强制执行。 任何其选择器与 Worker 请求相匹配的现有 Gateway 策略都将适用 —— 包括允许/阻止列表、DNS 类别过滤和 HTTP 目标规则。如果您已经为您的员工屏蔽了某个类别,您的 Workers 将继承该屏蔽。
{
	"vpc_networks": [
		{
			"binding": "EGRESS",
			"network_id": "cf1:network",
			"remote": true,
		},
	],
}
[[vpc_networks]]
binding = "EGRESS"
network_id = "cf1:network"
remote = true
// Egress to a public destination — subject to your Gateway policies and logged
const response = await env.EGRESS.fetch("https://api.example.com/data");
// Egress to a public destination — subject to your Gateway policies and logged
const response = await env.EGRESS.fetch("https://api.example.com/data");

有关配置选项,请参阅 VPC 网络(VPC Networks)。有关策略编写,请参阅 Cloudflare Gateway 流量策略

从 Workers VPC 访问 Cloudflare WAN 目标

You can now use VPC 网络(VPC Network) 绑定(binding)与 network_id: "cf1:network" 从 Workers 访问您的整个私有网络,包括:

这意味着单个 VPC 网络绑定可以将 Worker 请求路由到私有服务,无论这些服务是如何连接到 Cloudflare 的:是通过来自云 VPC 的 Cloudflare Tunnel、私有子网上的 Mesh 节点,还是通过来自您的数据中心或分支机构站点的 Cloudflare WAN 接入端。

{
	"vpc_networks": [
		{
			"binding": "PRIVATE_NETWORK",
			"network_id": "cf1:network",
			"remote": true,
		},
	],
}
[[vpc_networks]]
binding = "PRIVATE_NETWORK"
network_id = "cf1:network"
remote = true

在运行时,您传给 fetch() 的 URL 决定了目标:

// Reach a service behind a Cloudflare WAN IPsec on-ramp
const response = await env.PRIVATE_NETWORK.fetch("http://10.50.0.100:8080/api");

有关配置选项,请参阅 VPC 网络(VPC Networks)