cloudflare tunnel 折腾小记

https://blog.noname.cc/2023/01/02/20230102/

cloudflare 账号注册

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

域名准备和配置

有两种方式:

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

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

adaline.ns.cloudflare.com
nero.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. 创建隧道
# 创建一个隧道, 名为 fedora
cloudflared tunnel create fedora
# 此时会出现一个 UID,后续配置文件中会用到,也可以执行 `ls ~/.cloudflared/` 查看
  1. 绑定域名和隧道的对应关系, 可以一个隧道绑定多个域名
# 绑定域名, 一个隧道可以同时接管多个子域名, 将多个域名都路由指定的隧道
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
  1. 编辑配置文件
    在 .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 登录配置

  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.cc
ProxyCommand /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

posted on 2023-01-07 00:36  Hackergin  阅读(5114)  评论(1编辑  收藏  举报