Cloudfare内网穿透效能工具
Cloudfare 内网穿透实现
最近在测试项目中,由于某个需要再测试过程中涉及很多SQL执行的操作,要模拟多个不一样的环境,多种数据,当测试完毕交付给产品走查的时候,发现产品可能不怎么会使用SQL,即使会使用你仍需要耗费大量的精力去告诉每个表的结构以及逻辑等,基于这个场景我基于FastApi开发了一版swagger下的数据库查询接口。
但是我是部署在本机的,由于部分时间我们会在家里办公,产品此时就无法访问,虽然可以部署到公司环境中,但是目前评估只是当前需求涉及频繁后续可能都怎么频繁,所以放弃了部署到公司环境中,随后使用cloudfare进行内网穿透,即使产品和我不在一个网络只要我开机,便可以在公开网络上访问到,非常便利!
cloudfare 上绑定域名
首先你得有域名,这个应该很简单,你可以从阿里云上购买很多域名,这里就不介绍了,然后你得从cloudfare上进行注册账户,这个也很简单。接下来我们就需要绑定我们的域名了
添加域名
进去cloudfare主页后,点击添加域

输入现有的域名

继续,然后我们选择0元的计划,进行无需付费的使用

滑到页面底部,点击 继续前往激活

滑到页面底部,复制cloudfare 给我们分配的两个DNS 服务器。

然后找到你的域名提供商,将你的域名的DNS进行更改,按照cloudfare基于的,改完之后稍等5-10分钟即可看到页面主页的显示已经激活。

此刻我们的域名已经绑定成功。
申请Zero Trust
需要进行内网穿透我们要在Zero Trust中进行申请,点击主页的Zero Trust

进去后,滑到底部,选择账户和计费

继续选择免费的计划

此时需要填写一个银行卡信息,当然我们都选择Free的计划 是不会产生任何收费行为的,你写上也不会扣钱的。

都写完毕后,我们就可以点击购买,然后当然就完成了Free计划的申请。
然后我们回到首页,点击网络
选择下面的 Tunnels
, 然后输入一个团队的名字然后点击创建即可!
github上下载相关执行文件
windows
因为我的电脑是Windows的,所以我这边以Windows为例,不过过程的都大同小异的!
访问github地址:https://github.com/cloudflare/cloudflared/releases
打开后,点击show all 28 assets

选择对应的系统版本,我这里选择的是cloudflared-windows-amd64.exe
下载完毕后,放到随意的文件夹下,将这个文件名重命名为 cloudflared.exe
然后cmd 到文件夹下执行命令行
1 |
|
浏览器会自动打开一个 Cloudflare
授权页面,让你选择域名并确认。登录成功后,会在你的用户目录下生成一个 .cloudflared
文件夹和cert.pem
文件。

创建Tunnel
然后命令行创建Tunnel
,还是回到刚刚放置cloudfare.exe
文件夹下执行cmd命令
1 |
|
这将创建一个名为 你的隧道名称
的 Tunnel
,同时 Cloudflare
会自动分配一个 Tunnel ID
,并在本地生成配置文件。
此时生成的配置文件仍然在证书生成的那个文件夹下的一个json文件。

然后我们继续配置执行命令行
1 |
|
例如
1 |
|
此时执行成功后,对自动创建到cloudfare
中的一个CNAME
类型的解析

此时我们就注册了我们的隧道
编写配置文件
此时仍在cloudfare.exe
文件所在的文件夹下创建一个config.yml
的配置文件
credentials-file
是你生成的json文件路径
1 |
|
保存完毕后,就完成了配置文件的编写
运行Tunnel
运行前先将你本地的项目启动,最好以局域网访问的方式启动,而不只是以loaclhost
方式启动。
然后我们启动Tunnel,仍在cloudfare.exe
文件夹下执行命令行
1 |
|
例如:
1 |
|
此时就可以看到启动了,如果弹出提示需要获取网络传输权限,需要给予!
非常重要!
Cloudflare Tunnel
是通过 QUIC
(或 TCP
)协议连接到 Cloudflare
的全球节点。如果你看到这个报错:

QUIC
是首选传输协议,但因为网络问题失败了。
此时不要慌,那是因为你的路由器或者其他的网络设备不支持,此时你在配置文件中加入
config.yml
1 |
|
此时Tunnel
会尝试回退到 TCP
,但如果两者都失败,就会 503
。
再次启动后,会报通用的错误,此时需要等待3-5分钟,就会成功了!

然后此刻你就可以访问你的项目了,按照你的域名就可以享受网络访问了!
总结
cloudfare 可以提供很多免费的项目,大家可以自己选择!当然你也可以做到开机自动启动,都是可以的!