Cloudflare Tunnel (内网穿透-使用)
Cloudflare Tunnel 是由 Cloudflare 提供的一种现代化的内网穿透解决方案,它允许开发者安全地将应用程序和服务暴露在互联网上,而无需公开暴露服务器或网络基础设施。与传统的端口转发或静态IP地址不同,Cloudflare Tunnel 使用一个名为 cloudflared
的轻量级代理来创建一个到 Cloudflare 网络的安全连接。
域名以:lyresky.com
为例
准备
cloudflare 账号
域名
- 在 cloudflare 购买域名
- 在其他平台的域名,通过配置解析域名规则托管在 cloudflare
Cloudflare 配置
基本配置
安装
# 直接将可执行文件下载到 bin 目录
sudo curl -L 'https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64' -o /usr/bin/cloudflared
# 增加执行权限
sudo chmod +x /usr/bin/cloudflared
登录
$ ./cloudflared tunnel login
输入命令后,终端会给出一个登陆地址,拷贝到浏览器里面打开,选择需要授权的域名,完成后将生成一个证书文件 ~/.cloudflared/cert.pem
。
创建隧道
# cloudflared tunnel create <隧道名字>
# 创建一个隧道,名为 lyresky
cloudflared tunnel create lyresky
此时会出现一个 UID,后续配置文件中会用到,也可以执行 ls ~/.cloudflared/
查看
创建 DNS 记录
# cloudflared tunnel route dns <隧道名字> <域名>
# 隧道绑定域名(按自己需要绑定),一个隧道可以同时接管多个子域名,将多个域名都路由指定的隧道
# 一级域名(和Web界面不一样,不需要输入@)
cloudflared tunnel route dns lyresky lyresky.com
# 二级域名
cloudflared tunnel route dns lyresky blog.lyresky.com
# 其他...
cloudflared tunnel route dns lyresky ssh.xxx.cc
cloudflared tunnel route dns lyresky rdp.xxx.cc
cloudflared tunnel route dns lyresky vscode.xxx.cc
执行后 Cloudflare 会自动添加一条CNAME记录到对应的域名,也可以登录Cloudflare 的 Web 控制台
查看和编辑
编辑配置文件
# tunnel: <隧道UUID>
tunnel: <隧道UUID>
credentials-file: /root/.cloudflared/<隧道UUID>.json
# 协议
protocol: h2mux
ingress:
- hostname: lyresky.com
service: http://localhost:8080
originRequest:
disableChunkedEncoding: false
noTLSVerify: false
- hostname: blog.lyresky.com
service: http://localhost:8081
originRequest:
disableChunkedEncoding: false
noTLSVerify: false
- hostname: <ssh.域名.com>
service: tcp://localhost:22
originRequest:
disableChunkedEncoding: false
noTLSVerify: false
- hostname: <vnc.域名.com>
service: rdp://localhost:3389
originRequest:
disableChunkedEncoding: false
noTLSVerify: false
- service: http_status:404
更多支持的服务和配置方式,参考帮助文档:Supported protocols
测试
-
验证配置
$ ./cloudflared tunnel ingress validate
-
规则是否命中
$ ./cloudflared tunnel ingress rule https://memos.abc.com
服务化配置
-
配置为系统服务
cloudflared service install
安装完成之后,则可以使用 systemctl 命令进行服务控制
-
设置自启动
systemctl enable cloudflared
-
查看服务状态
systemctl status cloudflared
-
修改配置
vi /etc/cloudflared/config.yml
注册为服务之后,相应的配置会 copy 到 /etc/cloudflared/config.yml, 如有后续的相关修改,直接修改这个文件即可
-
重启服务
systemctl restart cloudflared
访问站点
cloudflared
启动后,打开网址 blog.lyresky.com