cloudflare tunnel 折腾小记

  • cloudflare tunnel 折腾小记已关闭评论
  • 158 次浏览
  • A+
所属分类:linux技术
摘要

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


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