笔记

斶知足矣,归真反璞,则终真不辱也。

模子

很久没有记录东西了,原因是多方面的,可能单纯只是回归成本和转换成本的问题,但不管怎么说,又是一个三年。有一种论调,人只活了前二十几年,后续的时间只是前面的重复;谈人生可能夸张了点,只看生活和工作却真有些道理,然生活与工作的重复又何尝不是人生。
回到主题来,tunnel服务,简单来说就是为了从公网访问内网提供的代理服务,大多数情况下内网服务想通过公网访问需要通过好数个NAT,情况复杂,不直接访问的原因通常不是不想而是不能。
至于为什么会想折腾这么个东西?之前在有非常合适的新人优惠的时候买的服务器快过期了,毕竟没有什么生产性任务跑在上面,主要用途其实是拿来做frp中转,续费还是算了,再加上以前入手的二手无风扇工控机用起来感觉还不错,拿来做转发挂个博客啥的还是没问题的,于是就开始寻找合适的服务。

比对

之前 cloudflare tunnel 免费时尝试着用过,拿来挂网页是足够的,速度还不错,只要能建立链接,转发一些多媒体服务似乎都是可行的。原理上似乎是通过边缘计算节点中转流量,而这个节在国外,如果转发一些实时性和链接稳定性高的服务体验就会很糟糕(比如WEB IDE)。
换个思路,找找收费服务,找了下做转发的中小服务商其实还挺多,淘宝一搜有很多每个月10来块的,随便找了些看,发现主要提供的是frp中转服务,也可以提供自定义域名以及泛域名证书走https,但深入了解就会发现限制很多,基本是按通道个数 + 流量收费的,国内的服务如果要用需要备案,免费的支持解析的大都是国外的服务,ping了下,延迟可能还不如cloudflare。
再然后看了看,花生壳和natapp,这种大型服务商,基本是小服务商的升级版,价格贵一些,限制差不多,这么看来 cloudflare 实属良心,先搭起来用吧,听说是有大陆节点的,不知道如果给它付费能不能获得更好的体验。

正题

cloudflare tunnel 的创建有两种
概括起来,

第一种

  1. 到 cloudflare 的零信任控制台 Access>Tunnels 点击 "Create a tunnel",按提示创建
  2. 配置 Public Hostname 进入配置界面,选择Public Hostname,点击 "Add a public hostname" 按钮,添加一个子域名,并按提示配置本地服务相关信息。
  3. 根据控制台给的 tunnel 详细信息在本地服务对应的机器上跑起来 cloudflared 服务。

实际跑起来的服务会根据参数载入具体的配置信息,不怎么需要关心本地的配置,全程有引导算是比较省心。

第二种

  1. 直接去下载 cloudflared 服务:https://github.com/cloudflare/cloudflared/releases
wget https://github.com/cloudflare/cloudflared/releases/download/2022.9.1/cloudflared-linux-amd64
  1. 安装并登陆
# 会提供也个网页做登陆验证
./cloudflared-linux-amd64 login

# 注册为服务(可选)
./cloudflared-linux-amd64 service install 
  1. 创建 tunnel
cloudflared tunnel create <name>
  1. 本地配置
# 进入配置所在文件夹 
cd ~/.cloudflared/
# 这时里面会有一个证书和一个 xxxx.json 这里的 xxx 为通道的标识符
# 没有则创建
vim config.yml

# Tip: 如果注册为服务则需要检查服务读取的配置文件位置,建议软链过去 像这样
ln -s ~/.cloudflared/config /etc/cloudflared/config.yml

# TIP: 检查服务配置
systemctl status cloudflared
# 检查 “Loaded” 项中的 service 文件
# 检查 “ExecStart” 中指定的 config 文件

写入如下信息 xxxx 与上面的json对应

tunnel: xxxx
credentials-file: /root/.cloudflared/xxxx.json 

ingress:
        # 自己的域名
    - hostname: <hostname> 
        # 需要代理的本地服务的信息
      service: http://0.0.0.0:80

        # 可以配置多个
    - hostname: <hostname> 
      service: http://0.0.0.0:8081

    - service: http_status:404  
  1. 在 cloudflare 上添加 CNAME 解析 至 xxxx.cfargotunnel.com
  2. 启动
# 如果注册过服务
systemctl start cloudflared
# 查看运行状态
journalctl -u cloudflared -f
# 开机启动
systemctl enable cloudflared

# 如果没有
./cloudflared-linux-amd64 tunnel run

结束

实际上两种方式创建的 tunnel 都可以在 零信任控制台 Access > Tunnels 中看到。区别在于,在本地创建的,需要迁移到平台才能在平台上修改(过程不可逆转,且本地配置会失效),如果, tunnel 需要经常在不同的机子上迁移,迁移到平台上再部署会轻松一些,如果希望本地修改配置文件,那用方法2会灵活的多。

追记

发现一个通道服务提供商 cpolar 类型上与 cloudfalre tunnel 很像,价格相对来说比较合理,但看到带宽套餐昂贵的价格不知道实际体验会如何。

Comment

This is just a placeholder img.