LOGO 首页 OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 技术文档 其他文档  
 
网站管理员

[点晴永久免费OA]内网穿透神器 Cloudflared:不用公网 IP,也能安全暴露你的服务

admin
2026年7月6日 16:47 本文热度 174

一、痛点:为什么内网服务暴露这么难?

传统方案的烦恼

很多开发者和个人用户都有这样的困扰:

  • 🏠 家里有 NAS,想在外面访问照片和文件
  • 🤖 跑了个 HomeAssistant,想远程控制智能家居
  • 💻 自建了博客/应用,想分享给朋友
  • 🔧 开发了个 API,想让外部服务调用

传统做法:

买云服务器 → 配端口映射 → 搞 DDNS → 开防火墙 → 担心被攻击 → 焦虑

每一步都在增加安全风险,而且没有公网 IP 的家庭宽带基本没法玩

Cloudflared 的颠覆性思路

Cloudflared 换了一个完全不同的角度:

不是让别人连你,而是你主动连出去。

你的内网服务不需要开任何端口,不需要公网 IP。Cloudflared 在本地建立一个出站连接到 Cloudflare 的全球边缘网络,然后 Cloudflare 把你的服务"挂载"到它们的域名下。

核心优势:

  • ✅ 零端口开放:你的服务器不需要暴露任何端口
  • ✅ 无需公网 IP:家庭宽带、公司内网都能用
  • ✅ 自带 HTTPS:自动申请和管理 SSL 证书
  • ✅ DDoS 防护:背后是 Cloudflare 的全球 CDN
  • ✅ 免费使用:个人用途完全免费

二、Cloudflared 是什么?

Cloudflared 是 Cloudflare 官方出品的 Tunnel 客户端,GitHub 星标 14,600+,是内网穿透领域的标杆项目。

它的工作原理:

┌─────────────────────────────────────────────────────┐
│                  你的内网环境                         │
│                                                     │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐      │
│  │  NAS     │    │  Web     │    │  API     │      │
│  │ :8080    │    │ :3000    │    │ :8000    │      │
│  └────┬─────┘    └────┬─────┘    └────┬─────┘      │
│       │               │               │             │
│       └───────────────┴───────────────┘             │
│                       │                             │
│              ┌────────▼────────┐                     │
│              │  Cloudflared    │ ← 主动出站连接      │
│              │  (Docker 容器)   │                     │
│              └────────┬────────┘                     │
└───────────────────────┼─────────────────────────────┘
                        │ (出站 HTTPS/WSS)
                        ▼
              ┌──────────────────┐
              │  Cloudflare Edge  │ ← 全球 300+ 节点
              │  (免费 CDN + DNS)  │
              └────────┬─────────┘
                       │
                       ▼
            your-site.trycloudflare.com
            或 subdomain.yourdomain.com

关键点: 整个过程中,你的内网服务器不需要监听任何外部端口,所有连接都是 Cloudflared 主动向外发起的出站连接。


三、核心特性一览

1. 多种 Tunnel 类型

类型
适用场景
公共 DNS
通过 Cloudflare 分配的域名暴露服务
公共 Load Balancer
多区域部署,负载均衡
私有路由
仅供 WARP 客户端访问的内网服务

2. 支持多种协议

  • HTTP/HTTPS:Web 应用、API、Dashboard
  • TCP:SSH、RDP、数据库连接
  • WebSocket:实时通信、在线服务
  • 自定义端口:任意端口的服务都能代理

3. 安全特性

  • 🔒 自动 HTTPS:每个 Tunnel 自动获得有效的 SSL 证书
  • 🛡️ DDoS 防护:所有流量经过 Cloudflare 边缘网络
  • 👤 Zero Trust 集成:支持身份认证、MFA、IP 限制
  • 📋 细粒度路由:按域名、路径、IP 精确控制访问

4. 高可用部署

支持多实例部署,当某个 Tunnel 节点下线时,流量自动切换到其他节点,保证服务不中断。


四、Docker 一键部署

最简单的方式:TryCloudflare

Cloudflare 提供了一个免注册的试用域名 *.trycloudflare.com,适合测试:

# docker-compose.yml
version:"3"
services:
cloudflared:
    image:cloudflare/cloudflared:latest
    container_name:cloudflared
    restart:unless-stopped
    command:tunnel--no-autoupdatecloudflaredtry
    networks:
      -default
    ports:
      -"8080:8080"# 用于访问 trycloudflare 诊断页面

启动后访问 http://随机生成的.trycloudflare.com 就能看到 Cloudflared 的诊断页面。

正式使用:绑定自有域名

# docker-compose.yml
version:"3"
services:
cloudflared:
    image:cloudflare/cloudflared:latest
    container_name:cloudflared
    restart:unless-stopped
    volumes:
      -./cloudflared:/etc/cloudflared
    command:tunnelrun
    networks:
      default:
      webapp:

networks:
webapp:
    driver:bridge

配合 Caddy 一起用

version: "3"
services:
# 你的 Web 应用
myapp:
    image:nginx:alpine
    networks:
      -webapp

# Cloudflared Tunnel
cloudflared:
    image:cloudflare/cloudflared:latest
    container_name:cloudflared
    restart:unless-stopped
    volumes:
      -./cloudflared:/etc/cloudflared
    command:tunnel--config/etc/cloudflared/config.ymlrun
    depends_on:
      -myapp
    networks:
      -webapp
    # 不需要暴露任何端口!

Caddy 反向代理 + Cloudflared

version: "3"
services:
caddy:
    image:caddy:2-alpine
    container_name:caddy
    restart:unless-stopped
    ports:
      -"80:80"
      -"443:443"
    volumes:
      -./Caddyfile:/etc/caddy/Caddyfile
      -caddy_data:/data
      -caddy_config:/config
    networks:
      -proxy

cloudflared:
    image:cloudflare/cloudflared:latest
    container_name:cloudflared
    restart:unless-stopped
    volumes:
      -./cloudflared:/etc/cloudflared
    command:tunnel--config/etc/cloudflared/config.ymlrun
    depends_on:
      -caddy
    networks:
      -proxy

volumes:
caddy_data:
caddy_config:

Caddyfile 配置示例:

yourdomain.com {
    reverse_proxy cloudflared:8080
}

五、实际使用场景

场景 1:把 NAS 暴露到外网

cloudflared:
  image: cloudflare/cloudflared:latest
  command: >
    tunnel --no-autoupdate run
    --token YOUR_TUNNEL_TOKEN
  restart: unless-stopped

配置路由:

# /etc/cloudflared/config.yml
tunnel:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
credentials-file:/etc/cloudflared/xxxx.json

ingress:
-hostname:nas.yourdomain.com
    service:http://localhost:5000
-service:http_status:404

效果: 在外网访问 nas.yourdomain.com 就能直接访问家里的群晖 NAS,无需任何端口映射。

场景 2:HomeAssistant 远程访问

ingress:
  - hostname: ha.yourdomain.com
    service: http://homeassistant.local:8123
  - service: http_status:404

配合 Zero Trust 策略,还可以加上身份认证——只有登录了你的 Cloudflare 账号才能访问。

场景 3:SSH 安全远程连接

ingress:
  - hostname: ssh.yourdomain.com
    service: ssh://localhost:22
# 在外网安全连接
ssh -p 22 user@ssh.yourdomain.com

不需要在防火墙上开 22 端口,SSH 流量通过 Cloudflare 加密隧道传输。

场景 4:API 服务供第三方调用

ingress:
  -hostname:api.yourdomain.com
    service:http://myapi:3000
-hostname:webhook.yourdomain.com
    service:http://webhook:8080
-service:http_status:404

第三方只需要调用 https://api.yourdomain.com,你的服务器完全隐藏在内网后面。


六、安全加固建议

1. 启用 Zero Trust 访问策略

Cloudflare Dashboard → Zero Trust → Access → Policies

设置规则:

  • 只允许特定邮箱域名访问
  • 要求 MFA 二次验证
  • 限制特定 IP 范围
  • 设置会话超时

2. 使用 Token 认证

# 创建 Tunnel 并获取 Token
cloudflared tunnel create my-tunnel
cloudflared tunnel credentials

# 用 Token 方式运行(无需完整配置)
cloudflared tunnel --no-autoupdate run --token YOUR_TOKEN

3. 多实例高可用

version: "3"
services:
cloudflared-1:
    image:cloudflare/cloudflared:latest
    command:tunnel--config/etc/cloudflared/config.ymlrun
    volumes:
      -./cloudflared-1:/etc/cloudflared

cloudflared-2:
    image:cloudflare/cloudflared:latest
    command:tunnel--config/etc/cloudflared/config.ymlrun
    volumes:
      -./cloudflared-2:/etc/cloudflared

在不同地域部署多个 Tunnel 实例,自动故障切换。


七、常见问题

Q1:Cloudflared 免费吗?

完全免费。 公共 Tunnel 功能没有任何费用,包括无限 Tunnel 数量、无限 DNS 记录、无限请求。唯一收费的是 Cloudflare Zero Trust 的企业级功能。

Q2:会不会很慢?

Cloudflare 在全球有 300+ 边缘节点,大部分地区的延迟在 10-50ms 以内。对于个人应用、NAS 访问、HomeAssistant 等场景,体验几乎无感知。

Q3:Cloudflare 能看到我的流量吗?

Tunnel 内的流量是端到端加密的。Cloudflare 作为反向代理可以看到请求头,但无法解密你的后端服务与客户端之间的内容(除非你使用不加密的后端服务)。建议始终使用 HTTPS。

Q4:和 frp / ngrok 比有什么优势?

特性
Cloudflared
frp
ngrok
需要公网服务器
❌ 不需要
✅ 需要
❌ 不需要
免费额度
✅ 完全免费
✅ 完全免费
⚠️ 有限制
DDoS 防护
✅ 自带
❌ 无
✅ 有
延迟
✅ 低(CDN 边缘)
取决于服务器
⚠️ 中等
安全性
✅ 高
⚠️ 需自行配置
✅ 高

最大优势: 不需要自己维护中继服务器,Cloudflare 帮你搞定一切。

Q5:国内能用吗?

Cloudflare 的边缘节点在国内的覆盖有限,延迟可能较高。但对于海外用户访问对延迟不敏感的场景(如 NAS 管理、HomeAssistant 控制),完全够用。如果对国内访问速度有要求,可以考虑搭配 CDN 或使用其他方案。


八、总结

Cloudflared 改变了我们暴露内网服务的方式。它用最简单的思路解决了最复杂的问题:

你不需要打开任何端口,不需要公网 IP,不需要维护中继服务器。

核心价值:

  • 🚀 零配置上线:Docker 一行命令就跑起来
  • 🔒 极致安全:端口全关,服务隐身
  • 💰 完全免费:个人用途无限制
  • 🌍 全球加速:Cloudflare CDN 加持
  • 🛡️ 自带防护:DDoS 清洗、HTTPS 自动

如果你有一台内网服务想暴露到外网,或者厌倦了折腾端口映射和 DDNS,Cloudflared 值得你花 10 分钟试试。

有时候,最好的安全措施就是——什么都不开。


🔥 行动建议: 打开 Docker Compose,粘贴上面的配置,5 分钟内让你的服务安全地上线。

先到 Cloudflare Tunnel 文档[1] 注册你的第一个 Tunnel,然后回来跑 Docker。


该文章在 2026/7/6 16:47:43 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved  粤ICP备13012886号-9  粤公网安备44030602007207号