笔记

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

模子

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

比对

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

正题

Cloudflare Tunnel 的创建有两种
概括起来,

第一种

  1. 进入 Cloudflare 的零信任控制台 域名管理 -> Access -> Zero Trust
  2. 点击 Networks -> Access 下的 Create a Tunnel
  3. 选择 Cloudfalred 配置名称,保存
  4. 根据给出的脚本去想创建通道的服务器上下载 CloudFlared 会自动关联上
  5. 在平台上配置,本地想代理什么服务去哪个域名

实际跑起来的服务会根据参数载入具体的配置信息,不怎么需要关心本地的配置,全程有引导比较省心。
可以在平台上随意创建/修改/删除通道,也挺灵活的。

第二种

  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 都可以在 零信任控制台 中看到。区别在于,在本地创建的,需要迁移到平台才能在平台上修改(过程不可逆转,且本地配置会失效),如果 Tunnel 需要经常在不同的机子上迁移或者修改,迁移到平台上再部署会轻松的多,如果希望本地修改配置文件,或者在本地通过代码控制 Tunnel 或者集成到 Docker 中去那用方法2会灵活一些。

追记

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

追记 2023-03

2月通过 Tunnel 访问服务的时候感觉非常的慢,于是开了 ago 大概 5刀 一个月,延迟方面改善的不多但是稳定性极大的提升了,总体感觉还是不太划算。看来得根据情况调整,已经购买过的服务,开了以后即使用不太上,也总是不想取消算是我的一个坏毛病吧,切实的有些浪费钱了。

追记 2023-07

ago开了两个月后就关了,然后托管博客一年有余,通过本地部署kuma配置半小时一次的页面监控,30天可访问性大概85%左右。考虑到使用的网络形式(移动带宽,wifi桥接)以及大的网络情况(一些节点可访问性肉眼可见的不行),配置些个人服务是足够的。最近新购置迷你主机一台重新配置Tunnel服务,发现通过平台控制台去配置的方式比想象中要省心太多了,不胜欣喜。

评论

This is just a placeholder img.