Skip to content

通过 Cloudflare Tunnel 内网穿透 实现公网访问内网服务

前言

通过 Cloudflare Tunnel,我们可以直接把内网搭建的服务穿透到公网上,与 frp 不同的是,Cloudflare Tunnel 并不需要购买有公网 IP 的服务器,直接通过 Cloudflare 就可以完成穿透,并且还能使用 80/443 端口。要想使用 Cloudflare Tunnel 需要满足条件:

  • 一个域名 (6-9位纯数字的 xyz 域名只需 0.67 美元一年)
  • 一张双币信用卡 一个绑定借记卡的 PayPal 账号 (用于开通 Cloudflare Zero Trust 免费计划,推荐使用 PayPal 绑定一张余额 0 的借记卡,防止误操作造成扣费)

部署

  1. 打开 Cloudflare Zero Trust 工作台
  2. 创建 Cloudflare Zero Trust,选择免费计划
  3. 添加付款方式,可以输入双币信用卡或者在 Payment method 右侧选择 PayPal
  4. 在 Tunnels 中创建一个 Tunnel,名字可以随意填写
创建 Tunnel
创建 Tunnel
  1. 一般情况下推荐选择 Docker 进行部署

信息

部分架构 (例如 arm) 无法通过 Docker 运行的,可以通过下载 release 中对应架构的版本进行手动安装

sh
curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-armhf.deb && 
sudo dpkg -i cloudflared.deb && 
sudo cloudflared service install <token>
安装 Tunnel
安装 Tunnel
  1. 由于官方提供的部署命令没有给容器增加名称与后台运行功能,因此可以使用以下命令或者 Docker Compose 进行部署 (最后加上自己的 token)
sh
# Docker
docker run --name cloudflared -d --restart=unless-stopped cloudflare/cloudflared:latest tunnel --no-autoupdate run --token
sh
# Docker Compose
services:
  cloudflared:
    image: cloudflare/cloudflared:latest
    container_name: cloudflared
    network_mode: host
    restart: unless-stopped
    command: tunnel run --token
  1. 容器部署成功后,就可以在给 Tunnel 添加 Public hostname
    • Domain 选择托管在 Cloudflare 的主域名
    • Subdomin 为需要访问的子域名
    • Type 内网服务一般选择 HTTP
    • URL 填写内网 IP + 端口
添加服务
添加服务
  1. 点击 Save hostname 保存后,稍等片刻,访问刚才设置的域名 (可以通过 https 进行访问,Cloudflare 会自动帮我们添加 SSL 证书),就能直接访问到内网部署的服务了

Last updated:

经典款
RackNerd

RackNerd

新手入门首选

洛杉矶 DC3 机房 | 3T 大流量

1C / 1GB / 20GB SSD / 3TB 流量

$21.99/年
欧洲优化
V.PS

V.PS

可选荷兰 / 德国

欧洲三网优化 | 电信 GIA + 联通 9929 + 移动 CMIN2

2C / 1GB / 20GB NVMe / 1TB 流量

€6.95/月
关注微信公众号
优化线路
Evoxt

Evoxt

最便宜的亚太优化线路

马来西亚 电信 GIA / 联通 9929
优惠码:AFF2377-DEV

1C / 512MB / 5GB SSD / 150GB 流量

$3.32/月
优化线路
搬瓦工

搬瓦工

15 个机房自由切换

洛杉矶 DC6 机房
电信 / 联通 GIA + 移动 CMIN2

2C / 2GB / 40GB SSD / 2.5TB 流量

$49.99/季