本指南介绍如何使用我们的轻量级连接器 cloudflared 将 Amazon Web Services (AWS) 虚拟机连接到 Cloudflare。
我们将部署:
- 一个运行基本 HTTP 服务器的 EC2 虚拟机。
- 一个 Cloudflare Tunnel,允许用户通过公共主机名或私有 IP 地址连接到该服务。
要完成以下步骤,您需要:
-
从 AWS 控制台,前往 Compute(计算)> EC2 > Instances(实例)
-
选择 Launch instance(启动实例)。
-
为您的 VM 实例命名。在此示例中,我们将其命名为
http-test-server。 -
在 **Amazon Machine Image (AMI)(Amazon 机器映像 [AMI])**中,选择您所需的操作系统和规格。本示例中,我们将使用 Ubuntu Server 24.04 LTS (HVM), SSD Volume Type。
-
在 **Instance type(实例类型)**中,您可以选择免费套餐中提供的 t2.micro。
-
在 **Key pair (login)(密钥对 [登录])**中,创建一个新的密钥对以用于 SSH。您需要将
.pem文件下载到您的本地机器上。 -
在 **Network settings(网络设置)**中,选择 Create security group(创建安全组)。
-
启用以下安全组(Security Group)规则:
- Allow SSH traffic from My IP(允许来自 My IP 的 SSH 流量):防止实例被公开访问。
- Allow HTTPS traffic from the internet(允许来自互联网的 HTTPS 流量)
- Allow HTTP traffic from the internet(允许来自互联网的 HTTP 流量)
-
选择 Launch instance(启动实例)。
-
实例启动并运行后,转到 **Instances(实例)**概览页面并复制其 **Public IPv4 DNS(公共 IPv4 DNS)**主机名(例如
ec2-44-202-59-16.compute-1.amazonaws.com)。 -
要通过 SSH 登录到该实例,请打开终端并运行以下命令:
cd Downloadschmod 400 "YourKeyPair.pem"ssh -i "YourKeyPair.pem" [email protected]-
运行
sudo su以获取该实例的完整管理员权限。 -
出于测试目的,您可以在端口
80上部署一个基础的 Apache Web 服务器:
apt update
apt -y install apache2
cat <<EOF > /var/www/html/index.html
<html><body><h1>Hello Cloudflare!</h1>
<p>This page was created for a Cloudflare demo.</p>
</body></html>
EOF- 要验证 Apache 服务器是否正在运行,请打开浏览器并访问
http://ec2-44-202-59-16.compute-1.amazonaws.com(确保通过http连接,而不是https)。您应该会看到 Hello Cloudflare! 测试页面。
创建一个 Cloudflare Tunnel 并在 AWS instance 上运行它。
-
登录到 Cloudflare 仪表板并转到 Networking(网络) > Tunnels(隧道)。
Go to Tunnels ↗ -
选择 Create a tunnel(创建隧道)。
输入您隧道的名称(例如
aws-tunnel)。-
选择 Create Tunnel(创建隧道)。
选择您的操作系统(对于您的 AWS instance,选择 Debian)。复制该安装命令并在您的 AWS instance 上运行它。
-
等待隧道连接。建立连接后,选择 Continue(继续)。
已发布应用程序允许互联网上的任何人连接到托管在您的虚拟私有云(VPC)上的 HTTP 资源。要为您的 Cloudflare Tunnel 添加已发布应用程序:
- 在 Routes(路由) 选项卡上,选择 Add route(添加路由),然后选择 Published application(已发布的应用程序)。
- 输入应用程序的主机名(例如
hellocloudflare.<your-domain>.com)。 - 在 Service 下,输入
http://localhost:80。 - 选择 Add route(添加路由)。
- 要进行测试,请打开浏览器并访问
http://hellocloudflare.<your-domain>.com。您应该会看到 Hello Cloudflare! 测试页面。
您可以选择创建 Access 应用程序来控制谁可以访问该服务。
私有网络路由允许用户使用 Cloudflare One Client 连接到您的 virtual private cloud (VPC)。要为您的 Cloudflare Tunnel 添加私有网络路由:
-
在 Cloudflare 仪表板中,转到 Networking(网络) > Routes(路由)。
Go to Routes ↗ 选择 Create route(创建路由) > Tunnel CIDR(隧道 CIDR)。选择您刚刚创建的隧道,输入您的 AWS instance 的私有 IP 地址(例如
172.31.19.0),然后选择 Create route(创建路由)。如果需要,您稍后可以扩展 IP 范围。在您的分流隧道配置中,确保私有 IP 通过 Cloudflare One Client 进行路由。例如,如果您的分流隧道处于**Exclude(排除)**模式,请删除
172.16.0.0/12。我们建议重新添加您的 AWS instance 没有明确使用的 IP。要确定重新添加哪些 IP 地址,请从
172.16.0.0/12中减去您的 AWS instance IP:将结果重新添加到您的分流隧道“排除”模式列表中。
-
要在用户设备上进行测试:
- 登录到 Cloudflare One Client。
- 打开终端窗口并使用其私有 IP 连接到服务:
curl 172.31.19.0<html><body><h1>Hello Cloudflare!</h1> <p>This page was created for a Cloudflare demo.</p> </body></html>
您还可以选择创建 Gateway 网络策略来控制谁可以通过其私有 IP 访问 AWS instance。
要保护您的 AWS 实例,您可以配置您的安全组规则 ↗以拒绝所有入站流量,并且仅允许向 Cloudflare Tunnel IP 地址发送出站流量。所有安全组规则都是“允许”规则;不匹配规则的流量将被阻止。因此,您可以删除所有入站规则,只保留相关的出站规则。
配置安全组规则后,验证您是否仍可通过 Cloudflare Tunnel 经由其公共主机名 或 私有 IP访问该服务。该服务不应再能从 Cloudflare Tunnel 之外访问——例如,如果您访问 http://ec2-44-202-59-16.compute-1.amazonaws.com,测试页面应该不再加载。