cloudflare tunnel 折腾小记
https://blog.noname.cc/2023/01/02/20230102/
cloudflare 账号注册
https://www.cloudflare-cn.com/products/tunnel/
域名准备和配置
有两种方式:
- 在 cloudflare 自己购买域名, 比较贵
- 在其他平台的域名, 通过配置解析域名规则, 这样可以托管在 cloudflare
以阿里云为例, 在域名管理页面, 选择对应的域名,配置解析服务器为:
adaline.ns.cloudflare.com
nero.ns.cloudflare.com
cloudflare 配置
基本配置
- 本机下载和配置 cloudflare 工具 , 以 linux 为例子
# 直接将可执行文件下载到 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
# 将出现的一长串 URL 拷贝到浏览器, 并选择对应的域名
- 创建隧道
# 创建一个隧道, 名为 fedora
cloudflared tunnel create fedora
# 此时会出现一个 UID,后续配置文件中会用到,也可以执行 `ls ~/.cloudflared/` 查看
- 绑定域名和隧道的对应关系, 可以一个隧道绑定多个域名
# 绑定域名, 一个隧道可以同时接管多个子域名, 将多个域名都路由指定的隧道
cloudflared tunnel route dns fedora blog.xxx.cc
cloudflared tunnel route dns fedora ssh.xxx.cc
cloudflared tunnel route dns fedora rdp.xxx.cc
cloudflared tunnel route dns fedora vscode.xxx.cc
- 编辑配置文件
在 .cloudflared 目录下,新建config.yaml
文件
tunnel: bd7782ba-1f06-4613-b395-cc6c0b237de2
credentials-file: /home/feng/.cloudflared/bd7782ba-1f06-4613-b395-cc6c0b237de2.json
protocol: h2mux
ingress:
- hostname: vscode.xxx.cc
service: http://localhost:8080
originRequest:
disableChunkedEncoding: false
noTLSVerify: false
- hostname: blog.xxx.cc
service: http://localhost:8081
originRequest:
disableChunkedEncoding: false
noTLSVerify: false
- hostname: fleet.xxx.cc
service: http://localhost:8082
originRequest:
disableChunkedEncoding: false
noTLSVerify: false
- hostname: clash.xxx.cc
service: http://localhost:7890
originRequest:
disableChunkedEncoding: false
noTLSVerify: false
- hostname: ssh.xxx.cc
service: tcp://localhost:22
originRequest:
disableChunkedEncoding: false
noTLSVerify: false
- hostname: vnc.xxx.cc
service: rdp://localhost:3389
originRequest:
disableChunkedEncoding: false
noTLSVerify: false
- service: http_status:404
SSH 登录配置
- 配置 ssh 的端口映射,url 改成 tcp 即可, 端口默认是 22
- hostname: ssh.xxx.cc
service: tcp://localhost:22
originRequest:
disableChunkedEncoding: false
noTLSVerify: false
- 客户端需要 cloudflared 工具配合使用.
修改 ~/.ssh/config 文件
Host ssh.xxx.cc
ProxyCommand /usr/local/bin/cloudflared access ssh --hostname %h
- 正常使用 ssh 命令登录即可
ssh xxx@ssh.xxx.cc
RDP 远程控制配置
- 配置 RDP 的端口映射, url 前缀改为 rdp, 默认端口是 3389
- hostname: vnc.xxx.cc
service: rdp://localhost:3389
originRequest:
disableChunkedEncoding: false
noTLSVerify: false
- service: http_status:404
- 使用 cloudflared 进行端口映射,将服务端的 3389 映射到本机的 3389 端口
cloudflared access rdp --hostname vnc.xxx.cc --url rdp://localhost:3389
- 使用 RDP 连接工具, 地址写为 localhost 即可
cloudflared 服务化配置
- 使用 cloudflared 创建服务
sudo cloudflared service install
安装完成之后,则可以使用 systemctl 命令进行服务控制
- 设置自启动
sudo systemctl enable cloudflared
- 查看服务状态
sudo systemctl status cloudflared
- 修改服务配置
当注册为服务之后,相应的配置会 copy 到 /etc/cloudflared/config.yml, 如有后续的相关修改,直接修改这个文件即可。
sudo vim /etc/cloudflared/config.yml
posted on 2023-01-07 00:36 Hackergin 阅读(4936) 评论(1) 编辑 收藏 举报