前提条件
1.一个托管于Cloudflare的域名,相关教程看这里创建 Cloudflare 帐户并添加网站
2.一台本地Linux Web机器,即内网穿透的对象,端口号建议85
3.正常网络连接
4.Cloudflare官方网站:https://www.cloudflare.com/zh-tw/
5.免费域名申请网站:https://my.freenom.com/clientarea.php
6.Centos7.9下载地址:http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso
1、Centos 7.9安装cloudflared
首先进入root账户,能够获取root权限安装
# 配置yum-utils
yum install yum-utils
# 添加 cloudflared.repo 到 config-manager
yum-config-manager --add-repo https://pkg.cloudflare.com/cloudflared-ascii.repo
# 安装 cloudflared
yum install cloudflared
PS:其它平台安装包下载地址以及官方安装说明文档
https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/installation/
https://pkg.cloudflare.com/index.html#centos-7
2、登录 Cloudflared
cloudflared tunnel login
# 这时会弹出来一个URL,用浏览器打开,登录成功后关闭浏览器,再次打开URL,这时候会出现授权页面,然后选择你想用来做内网穿透的域名授权即可。
# 成功后会生成证书,放置于~/cloudflared/cert.pem中。
3、建立隧道
# 名字可以随意起
cloudflared tunnel create <隧道名称>
例子:cloudflared tunnel create test
# 成功后会提示,相关凭证已放置于~/.cloudflared/<Tunnel-UUID>.json中。
cloudflared tunnel list
# 验证隧道是否建立成功,同时复制隧道ID
4、新建 Tunnel 对应的 DNS 记录
Service Description Example service value
HTTP/S 常规网页服务 https://localhost:80
TCP TCP连接 tcp://localhost:2222
SSH SSH 连接 ssh://localhost:22
RDP RDP 远程桌面 rdp://localhost:3389
# <域名>填你想用来做内网穿透的域名
cloudflared tunnel route dns <隧道名称> <域名>
例子:cloudflared tunnel route dns test cloudfreed.tk
# 成功后会创建CNAME记录将域名指向隧道,回到Cloudflare网站,点击域名,点击左边的DNS,能看到出现一条新的CNAME的DNS记录,此时证明解析成功。
5、新建配置文件
nano ~/.cloudflared/config.yml
#写入以下配置
tunnel: <隧道ID>
credentials-file: /root/.cloudflared/<隧道ID>.json
protocol: http2
originRequest:
connectTimeout: 30s
noTLSVerify: false
ingress:
- hostname: <域名>
service: http://localhost:85
- service: http_status:404
6、启动Cloudflared并且让 Cloudflared自启动
#修改systemd文件
nano /etc/systemd/system/cloudflared.service
#写入以下内容
[Unit]
Description=cloudflared
After=network.target
[Service]
TimeoutStartSec=0
Type=notify
ExecStart=/usr/bin/cloudflared --loglevel debug --transport-loglevel warn --config /root/.cloudflared/config.yml tunnel run <隧道名称>
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
#启动 Cloudflared
systemctl enable cloudflared --now
7、测试穿透是否成功
等待一两分钟,然后尝试访问域名,如可正常显示则成功。