type
status
date
slug
summary
tags
category
icon
password
比如我是公网IP 58.12.3.6下的内网中的一台机器172.17.12.32 他是如何实现外网访问到我这台172.17.12.32的
Cloudflare Tunnel(原称 Argo Tunnel)是一种安全的反向代理技术,允许您无需开放防火墙端口即可让外网访问您内网中的服务。它的核心原理是通过建立一条持续的、加密的隧道,将您的内网服务暴露到互联网,同时通过 Cloudflare 的网络层提供安全性和性能优化。

原理分析

  1. 隧道的建立
      • 您的内网机器(172.17.12.32)运行一个 Cloudflare Tunnel 客户端(cloudflared)。
      • 该客户端主动与 Cloudflare 的服务器建立一条加密的、长连接隧道(通常基于 HTTP/2 或 WebSocket)。
      • 隧道连接的方向是 内网机器向 Cloudflare 服务器,这避免了内网防火墙配置的复杂性。
  1. 公网到内网的路由
      • Cloudflare 将为您的服务分配一个唯一的域名(如 example.com)。
      • 当外网用户访问 example.com 时,DNS 请求解析到 Cloudflare 的 Anycast IP,用户的流量会被路由到距离用户最近的 Cloudflare 数据中心。
      • Cloudflare 数据中心会通过加密的隧道,将请求转发到运行 cloudflared 客户端的内网机器。
  1. 内网服务的响应
      • cloudflared 客户端接收到从隧道传递来的请求后,会将流量转发给内网的实际服务(如运行在 172.17.12.32:8080 的服务)。
      • 服务的响应通过隧道返回到 Cloudflare,然后由 Cloudflare 发送给外网用户。

具体实现步骤

1. 前提条件

  • 您的机器(172.17.12.32)可以访问公网(无需拥有公网IP,只需能访问互联网)。
  • 已经注册并验证了一个域名(如 example.com)。

2. 安装 cloudflared

  • 在内网机器上下载并安装 cloudflared(Cloudflare Tunnel 客户端)。
  • 登录 Cloudflare 并验证您的域名。

3. 启动隧道

  • 使用以下命令启动一个隧道:
  • 绑定域名并指定内网服务:
  • 这会告诉 Cloudflare 隧道将流量指向内网服务 172.17.12.32:8080

4. DNS 配置

  • Cloudflare 会自动为 example.com 添加 DNS 记录,指向 Cloudflare 的 Anycast IP。

5. 外网访问

  • 外网用户访问 https://example.com 时,Cloudflare 会通过隧道将流量路由到 172.17.12.32:8080

为何能够穿透内网?

  1. 主动连接机制
      • cloudflared 客户端主动与 Cloudflare 的数据中心建立连接,因此绕过了内网 NAT 和防火墙对入站连接的限制。
  1. 基于 Cloudflare 网络的反向代理
      • 外网用户的请求不会直接进入内网,而是通过 Cloudflare 的网络反向代理到隧道中。
  1. 端到端加密
      • 隧道使用 TLS 加密,确保内网和外网之间的通信安全。

安全性分析

  • 端到端加密:隧道通信经过加密,防止中间人攻击。
  • 隐藏内网 IP:外网用户只能看到 Cloudflare 的 IP,而看不到您的内网地址。
  • 访问控制:您可以通过 Cloudflare Access 对外网访问进行身份验证。
这种架构的优点是部署简单,安全性高,同时无需暴露公网IP或配置复杂的端口映射。
Linux下查找文件RDP协议
  • Twikoo