除了使用FRP部署内网穿透和使用ssh执行端口转发和内网穿透外,在没有云服务器的情况下,也可以使用 Cloudflare免费的Zero Trust实现内网穿透服务。
在此之前,需要满足以下条件:
- 首先需要注册 Cloudflare 的账号。
- 购买一个域名。
- 在域名服务商网站上将 NameServer 修改为 Cloudflare 服务器。以 namesilo 为例如下:
- 在 Cloudflare 上添加域名的 DNS。
- 本地服务器上需要安装 Cloudflare 的服务。在 Linux 中,可以选择用 Docker 或者直接安装。
Docker安装
Docker 安装可用于有 root 权限的服务器,配置比较方便。
- 进入 Cloudflare 的 Zero Trust,并创建一个 tunnel。
- 给 tunnel 起名,选择 Docker,复制以下命令并创建 Cloudflare 容器。
无root权限安装
没有 root 权限下,可按照以下步骤安装。以 red hat 系统为例。
- 下载 Cloudflare 的 RPM 包。
curl -L --output cloudflared.rpm https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm
- 使用 rpm2cpio 将 RPM 包解压到指定位置。
mkdir ~/.cloudflared
rpm2cpio ~/cloudflared.rpm | cpio -idv
- 将 Cloudflare 添加环境变量,查看是否安装完成。
.\cloudflared.exe --version
- 登录 Cloudflare。
cloudflared tunnel login
这条命令会打开一个浏览器窗口, 并提示登录。它会在默认的 ~/.cloudflared
目录中生成一个账户证书,即 cert.pem
文件。
在安装 Cloudflare 后,开始部署内网穿透服务。
- 创建一个隧道。给需要创建穿透服务创建 DNS 解析。
cloudflared tunnel create <NAME>
其中 <NAME>
是为隧道选择的名称。这个命令会创建一个隧道,并在您提供的名称和隧道的 UUID 之间建立持久的关系。
创建之后出现以下提示:
Tunnel credentials written to /home/wang/.cloudflared/2248485f-e727-4532-91d0-4f35904c88e5.json.
cloudflared chose this file based on where your origin certificate was found. Keep this file secret. To revoke these credentials, delete the tunnel.
这样会在 .cloudflared
目录中生成一个隧道凭证文件 *.json
子域名。
- 创建 DNS 解析。
cloudflared tunnel route dns <HOME> service1.example.com
cloudflared tunnel route dns <HOME> service2.example.com
...
- 在
~/.cloudflared
里新建一个config.yml
。编辑文件为:
tunnel: 2248485f-e727-4532-91d0-4f35904c88e5
credentials-file: /home/wang/.cloudflared/2248485f-e727-4532-91d0-4f35904c88e5.json
ingress:
- hostname: service1.example.com
service: http://localhost:8080
- hostname: service2.example.com
service: http://localhost:8096
- service: http_status:404
- 运行 tunnel。
cloudflared tunnel run <NAME>
© 版权声明
本站文章由不念博客原创,未经允许严禁转载!
THE END