无需云服务器的内网穿透方案 -- cloudflare tunnel

发布于:2025-07-27 ⋅ 阅读:(18) ⋅ 点赞:(0)

内网穿透

原文地址 https://docs.caolib.dpdns.org/network/cloudflare tunnel.html

Cloudflare Tunnel 内网穿透工具

1.简介

1.1 介绍

官方介绍:Cloudflare Tunnel 为您提供了一种安全的方式,无需公开路由的 IP 地址即可将资源连接到 Cloudflare。使用 Tunnel,您不会将流量发送到外部 IP,而是基础设施中的轻量级守护程序 (cloudflared) 创建与 Cloudflare 全球网络的仅出站连接 。Cloudflare Tunnel 可以将 HTTP Web 服务器、SSH 服务器 远程桌面和其他协议安全地连接到 Cloudflare。这样,您的源站就可以通过 Cloudflare 提供流量,而不会受到绕过 Cloudflare 的攻击。
有关如何在现有基础设施中实施 Cloudflare Tunnel 的详细信息,请参阅我们的参考架构

handshake.eh3a-Ml1_1IcAgC

1.2 它能做什么?

这应该是很多人关心的问题,我举个例子:

参照上面的工作图,假设我本地电脑上运行了一个服务器,端口是8080,这时候我希望可以通过公网访问这个服务,一般来说我们需要一个云服务器部署这个服务,然后通过公网IP和端口进行访问,非常麻烦。

如果使用cloudflare tunnel实现,你只需要在cloudflare上托管一个域名即可,无需云服务器!

2.快速开始

2.1 运行本地服务

首先你需要在本地运行你的服务,这里简单举个例子,新建一个js文件server.js,添加下面代码

const http = require('http');

// 创建服务器
const server = http.createServer((req, res) => {
    // 设置响应头
    res.writeHead(200, {
        'Content-Type': 'text/plain; charset=utf-8',
        'Access-Control-Allow-Origin': '*'
    });

    // 返回文本
    res.end('hello cloudflared');
});

// 监听端口10086
const PORT = 10086;
server.listen(PORT, () => {
    console.log(`服务器运行在 http://localhost:${PORT}`);
});

// 错误处理
server.on('error', (err) => {
    if (err.code === 'EADDRINUSE') {
        console.error(`端口 ${PORT} 已被占用,请使用其他端口`);
    } else {
        console.error('服务器错误:', err);
    }
});

然后使用下面命令启动服务器

node .\server.js

启动之后浏览器访问 http://localhost:10086/就能看到返回结果 hello cloudflared

2.2 安装 Cloudflare Tunnel

2.2.1 前置条件

安装之前先确保你已经注册了cloudflare账号并且在上面托管了一个域名,确保活动状态,下面是我托管的一个域名 kirakira.dpdns.org,以这个域名为例,这个域名是在DigitalPlat Domain Dashboard上免费申请的,不用手机号,非常方便简单,国内访问可能不太稳定但至少能用

image-20250726190428298

2.2.2 安装cloudflared

1.前往Cloudflare One然后登录,然后依次点击网络->Tunnels->创建隧道

image-20250726191051301

2.选择 cloudflared

image-20250726191441901

3.随便起个名字然后保存

image-20250726191554822

4.我这里选择Windows,其他平台选择对应的安装方式安装就行

image-20250726192757180

  1. 下载 https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-windows-amd64.msi.
  2. 运行安装程序。
  3. 管理员身份打开命令提示符。
  4. 运行以下命令:
cloudflared.exe service install eyJhIjoi..................

5.安装完成之后点击侧栏的Tunnels可以看到创建的隧道已经激活了

image-20250726204630664

2.2.3 配置tunnel

1.点击隧道名称然后点击编辑

image-20250726204824458

2.然后点击添加公共主机名

image-20250726210814049

[!important]

子域路径可以自定义设置,可以留空,服务就按照之前部署的本地服务填写即可

下图中的效果相当于将访问https://子域.域/路径的请求转发到你本地电脑<类型://URL>,也就是:

https://api.kirakira.dpdns.org -> http://localhost:10086/

image-20250726211456795

4.此时打开https://api.kirakira.dpdns.org就能看到效果了(第一次可能没那么快,大概过几秒会显示)

image-20250726212202264


[!tip]

补充几点:

  • 本地电脑上安装的cloudflared的服务可以转发多个端口,在公共主机名可以像上面一样添加,服务也可以设置为其他服务
  • 绑定的公共主机名会在该域名下添加DNS记录,注意不要误删除了
  • 如果你使用Windows,可以使用下面命令启动和停止cloudflared服务
    • 启动 sc start cloudflared
    • 停止 sc stop cloudflared(也可以用任务管理器停止)
  • 上述添加tunnel和公共主机名的过程也可以通过命令行完成 Create a tunnel (API) · Cloudflare Zero Trust docs

image-20250726214906425


网站公告

今日签到

点亮在社区的每一天
去签到