cloudflare 账号注册

https://www.cloudflare-cn.com/products/tunnel/

域名准备和配置

有两种方式:

  1. 在 cloudflare 自己购买域名, 比较贵
  2. 在其他平台的域名, 通过配置解析域名规则, 这样可以托管在 cloudflare

以阿里云为, 在域名管理页面, 选择对应的域名,配置解析服务器为:

adaline.ns.cloudflare.comnero.ns.cloudflare.com

cloudflare 配置基本配置

  1. 本机下载和配置 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
  1. 登录
cloudflared tunnel login# 将出现的一长串 URL 拷贝到浏览器, 并选择对应的域名
  1. 创建隧道
# 创建一个隧道, 名为 fedoracloudflared tunnel create fedora# 此时会出现一个 UID,后续配置文件中会用到,也可以执行 `ls ~/.cloudflared/` 查看
  1. 绑定域名和隧道的对应关系, 可以一个隧道绑定多个域名
# 绑定域名, 一个隧道可以同时接管多个子域名, 将多个域名都路由指定的隧道cloudflared tunnel route dns fedora blog.xxx.cccloudflared tunnel route dns fedora ssh.xxx.cccloudflared tunnel route dns fedora rdp.xxx.cccloudflared tunnel route dns fedora vscode.xxx.cc
  1. 编辑配置文件
    在 .cloudflared 目录下,新建 config.yaml 文件
tunnel: bd7782ba-1f06-4613-b395-cc6c0b237de2credentials-file: /home/feng/.cloudflared/bd7782ba-1f06-4613-b395-cc6c0b237de2.jsonprotocol: h2muxingress:  - 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 登录配置

  1. 配置 ssh 的端口映射,url 改成 tcp 即可, 端口默认是 22
  - hostname: ssh.xxx.cc    service: tcp://localhost:22    originRequest:       disableChunkedEncoding: false       noTLSVerify: false
  1. 客户端需要 cloudflared 工具配合使用.

修改 ~/.ssh/config 文件

Host ssh.xxx.ccProxyCommand /usr/local/bin/cloudflared access ssh --hostname %h
  1. 正常使用 ssh 命令登录即可
ssh xxx@ssh.xxx.cc

RDP 远程控制配置

  1. 配置 RDP 的端口映射, url 前缀改为 rdp, 默认端口是 3389
  - hostname: vnc.xxx.cc    service: rdp://localhost:3389    originRequest:       disableChunkedEncoding: false       noTLSVerify: false  - service: http_status:404
  1. 使用 cloudflared 进行端口映射,将服务端的 3389 映射到本机的 3389 端口
cloudflared access rdp --hostname vnc.xxx.cc --url rdp://localhost:3389
  1. 使用 RDP 连接工具, 地址写为 localhost 即可

cloudflared 服务化配置

  1. 使用 cloudflared 创建服务
sudo cloudflared service install

安装完成之后,则可以使用 systemctl 命令进行服务控制

  1. 设置自启动
sudo systemctl enable cloudflared
  1. 查看服务状态
sudo systemctl status cloudflared
  1. 修改服务配置
    当注册为服务之后,相应的配置会 copy 到 /etc/cloudflared/config.yml, 如有后续的相关修改,直接修改这个文件即可。
sudo vim /etc/cloudflared/config.yml