一、准备工作

  1. CloudFlare账号CloudFlare官网
  2. 一个可用的域名,域名的DNS服务器是可以修改的

域名须是CF认可的顶级域名,如com,cn,top,tk,ml,eu.org等

注意:注册CloudFlare时需要做好邮箱认证,邮箱未认证会导致无法给设备授权,设备获取授权时报1211错误

二、CloudFlare添加域名

  1. 登录CloudFlare账号

  2. 添加站点获取DNS服务器
    【添加站点】=-=>【Free】=-=>【继续】=-=>【继续】=-=> 【确认】=-=> 将 CloudFlare 提供的两个DNS服务器地址【复制】保存出来,修改域名的DNS服务器时会用到
    添加站点
    选择免费的
    CloudFlare提供的DNS服务器地址

  3. 修改域名的DNS服务器

    此处以腾讯云为例,等eu.org域名审批好后会增加eu.org例子

    登录腾讯云并打开我的域名 =-=> 【更多】=-=> 【修改 DNS 服务器】=-=>【自定义 DNS】=-=> 删除自带的DNS服务器地址 =-=> 将CloudFlare提供的两个DNS服务器地址添加进去 =-=> 【提交】
    修改DNS服务器
    只保留CF提供的DNS地址

三、设备部署CloudFlare

官方各种安装CloudFlare方式https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/#linux
本文使用的是“Debian Bullseye”

  1. 添加cloudflare gpg密钥

    sudo mkdir -p --mode=0755 /usr/share/keyrings
    curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
    
  2. 将此repo添加到apt库中

    echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared bullseye main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
    
  3. 安装cloudflare

    sudo apt-get update && sudo apt-get install cloudflared
    
  4. 获取登录地址并授权

    cloudflared login
    

    把shh页面的网址复制到浏览器打开并登录,选择要用的域名,点击【授权】
    授权设备
    授权成功

  5. 创建隧道

    cloudflared tunnel create 隧道名
    隧道名可以是英文,数字
    隧道 ID 记下来,下一步需要使用

    cloudflared tunnel create xxx
    

    创建隧道

  6. 创建配置存放目录

    mkdir -p /etc/cloudflared/
    
  7. 编辑配置文件

    vim /etc/cloudflared/config.yml
    

    tunnel: 隧道id
    credentials-file: /root/.cloudflared/隧道id.json
    要增加映射端口就需要增加下面两条
    - hostname: 登录用的域名
    service: http://127.0.0.1:端口(不加端口则默认为80)

    tunnel: 20103e62-c497-458b-9942-5b31e222187f
    
    credentials-file: /root/.cloudflared/20103e62-c497-458b-9942-5b31e222187f.json
    
    ingress:
    
      - hostname: blog.moyuan.asia
    
        service: http://127.0.0.1
    
      - hostname: docker.moyuan.asia
    
        service: http://127.0.0.1:8081
    
      - service: http_status:404
    

    若是忘记隧道 ID 可使用以下命令查看已创建的隧道

    cloudflared tunnel list
    

    配置文件

  8. 给隧道分配域名
    cloudflared tunnel route dns 隧道名 配置文件里的域名

    cloudflared tunnel route dns xxx blog.moyuan.asia
    cloudflared tunnel route dns xxx docker.moyuan.asia
    

    给隧道分配域名

    如果出现提示,需进入CloudFlare对应域名的DNS中,检查DNS记录里对应名称的内容是否与隧道ID一致,不一致则需要删除,再运行分配域名命令

    添加失败,记录已存在
    DNS记录

  9. 安装cloudflare.service服务

    cloudflared service install
    

    安装服务

  10. 设置自启动

    systemctl enable cloudflared
    
  11. 查看信息(可选)

    systemctl status cloudflared
    

    查看CF信息