使用CF Tunnel穿透内网项目

本文由AI生成,仅作部分细节修改。

1.安装 Cloudflare Tunnel

执行:

wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb

安装:

sudo dpkg -i cloudflared-linux-amd64.deb

检查:

cloudflared --version

2.创建 Tunnel

执行:

cloudflared tunnel login

会出现:

Please open the following URL:

复制网址。

浏览器打开。

登录 Cloudflare。

选择你的域名。

授权。

这里如果是第二次登录,则无需使用执行


创建:

cloudflared tunnel create xxxxxx

返回:

类似:

Tunnel UUID:
xxxx-xxxx-xxxx

记下来。


3.配置域名

创建配置文件:

nano ~/.cloudflared/config.yml

填写:

注意替换 UUID:

tunnel: xxxx-xxxx-xxxx

credentials-file: /root/.cloudflared/xxxx-xxxx-xxxx.json


ingress:

  - hostname: api.example.com
    service: http://localhost:8080
  - hostname: api2.example.com
    service: http://localhost:8888

  - service: http_status:404

保存。

这里的/root可以改为当前用户/home/username,因为前面用的nano ~/.cloudflared/config.yml

需要注意格式问题,下面的主机名与服务地址可以按需添加,一个CF Tunnel可以穿透多个服务。

似乎仅限登陆时选择的那个域名,这里没做测试。

这里可以使用下面的命令来查看当前用的哪个配置文件,如果修改了没反应,可以检查下,防止修改错了地方

sudo systemctl cat cloudflared | grep ExecStart

默认的配置文件可能在/etc/cloudflared/config.yml


4.绑定 DNS

执行:

cloudflared tunnel route dns xxxxxx api.example.com

进行DNS解析绑定。


5.启动 Tunnel

测试:

cloudflared tunnel run xxxxxx

这里直接浏览器访问测试就行

成功。

现在浏览器访问:

https://api.example.com

应该直接进入项目。


6.设置开机启动

安装服务:

sudo cloudflared --config /home/username/.cloudflared/config.yml service install

username为你的用户名

启动:

sudo systemctl start cloudflared

设置开机:

sudo systemctl enable cloudflared

检查:

systemctl status cloudflared

看到:

active (running)

完成。


7.常用命令

检查配置是否有格式错误

cloudflared tunnel ingress validate

测试域名解析地址

cloudflared tunnel ingress rule https://api.example.com

启动 Cloudflare Tunnel:

sudo systemctl start cloudflared

关闭:

sudo systemctl stop cloudflared

重启:

sudo systemctl restart cloudflared

查看状态:

systemctl status cloudflared