「速记」使用多个不同的 CloudFlare Tunnel 连接不同的局域网络
写在最前
我不是专业做运维的,所以某些特定概念可能描述的不准确。如果你想深入了解,我建议你更多的参考下官方文档,或许有更进一步的理解。
连接不同的私有网络,会涉及到一些数据安全的问题。如果是在公司环境或者相对严苛的环境里,请务必先和管理员确认下,自己的做法是否合规。
目前,我更多的也只是家用为主。努力想打造一个适合自己,效率足够高的家用开发一体化的环境。
能做到的效果
我有一个不算太厉害的天赋:面对特定问题时,能基于既有的有限知识,努力去找出可能有效的解决方案。这个不算天赋的天赋本身,更大众的说法,应该叫 “好奇心”吧。基于此,我对某个技术可能的应用场景,有相对略高的直觉。又或者说,我尝试的越多,大脑内的困惑越多。当我意识到某个不算太大的新的知识,能解决我过往的某个困惑时,往往会尝试验证下。
我曾经为家庭环境 & 云环境 不好融合而苦恼。后来,我种种权衡,几乎彻底抛弃了云环境。但是,AWS 和 Google 云,还算了有些优惠额度,还觉得挺可惜。
现在 Cloudflare Tunnel 解决了我 家用环境 和 云环境 融合的问题。最终可以做到的效果如下:
- 在一台电脑上,连接 WARP 客户端后,这个电脑可以同时访问 家用环境和云环境上的各种局域网内服务。如:在外界远程登录私有环境里的某个 mac 电脑的桌面,进行 iOS 开发。
- 目前对应的真实场景是:我在中国和日本各构建了一个家用环境。我现在可以在非家庭环境下,同时管理访问两个家庭环境。这样,就可以利用不同地区,各自的地理和网络优势了。
另外,待确认的效果:理论上,应该可以做到,在某个Linux服务器上,无缝同时调用不同局域网的服务,甚至不同局域网内的机器可以直接互相访问。不过,我暂时不想进一步探究。我不希望我的云环境和家庭环境,真正意义上的融合。当然,还是受限于我的网络知识不足,无法可靠评估背后的风险。
我的具体策略
- 使用同一个 Zero Trust Team。当然,同一个 Team 可以有多个账号的。
- 不同的私有网络,应该保证子网不冲突。比如我目前的两个子网对应的 CIDR 分别是: 192.168.1.0/24 和 192.168.32.0/24。简单地说就是: 网络前3位是固定的;最后一位是动态可以变化的。符合这个特征的 ip 地址,会路由到对应的 Tunnel 里。如果是云服务器的话,一般有类似的配置项,比如类似虚拟网关的服务;如果是家用网络,最简单的策略就是多买几个服务器,在子服务器上,单独配置下就行了。
- 同一个局域网内的机器,应连接到同一个 Tunnel 上。不这样做的话,会出现混乱。大致原因是:如果同一个 Tunnel 上,有多个机器连接了,CloudFlare 在做转发时,不一定会转发到哪台机器上。
以图会友: 画个图吧
- 本质上,是在和 Zero Trust 网络在通信。
- 所谓的 Tunnel,指的是 私有网络 和 Zero 网络之间的 Tunnel,而不是安装 WARP 的设备到某个内网的 Tunnel。这个差别,很微妙,也很重要。我刚开始一直以为 Tunnel 是设备到设备的,导致我无法理解为什么可以基于 1 个Tunnel可以同时访问内网的其他设备上的服务。
- 暂时就手绘了。去搜寻合适的图形模板的功夫,还不如我自己直接画出我的理解呢。
- 注意: ASUS PC 可以同时访问 privateNetworkA 和 privateNetworkB 两个子网下的设备,但是目前这样的设置,两个子网下的设备,是不能直接相互访问的。应该也有办法做到让两个子网的设备互相访问;但是目前这种状态,刚好符合我的预期,暂时不深入探究了。
可能的扩展应用
- 我还没想好。主要考虑,基于此可以用下google和aws云的免费额度。我可能会搭建一个 Ubuntu Desktop 版本。
- 然后远程桌面上去看看 Netflix 视频。现在Netflix的锁区,太强了。虽然日剧很多,刚好符合我的需要,但是如果能自由选择,体验应该会更好吧。
- 也可能在国内的阿里云上买个服务器,远程桌面上去,看看国内的综艺节目。现在挺尬的其实。国内的好多综艺,海外版App上都没法观看。
- 我需要评估下带宽的价格。如果云服务带宽太贵,估计就暂时连综艺也不看了。我其实有点奇怪,基于我已知的信息,大概率基于 Tunnel,会被算作内网间的通信,有可能是不用付费的。具体需要验证下。参见:2023年阿里云流量计费标准价格表
其他
本来我是想写一篇如何安装 Win11 + Ubuntu Server 双系统的文章的。但是配置太复杂。Ubuntu Server 不像 Ubuntu Destop,没有太多的磁盘选项。我只看到一个 use an entire disk 的选项。
基于此,我补充几个关键信息:
- 如果你是想安装 win11 + ubuntu desktop双系统,可以参考这篇:How to Dual Boot Windows 11 and Linux
- 如果你想挑战下 win11 + ubuntu server双系统,可以参考下:Problem installing Ubuntu server 22.04 。我没有仔细验证,我最后备份完 win11 下 Virtualbox 里的核心文件后,就索性直接把整个作为 Ubuntu Serrver 的安装盘了。当然,我现在已经失去了我的 windows 系统。不过也没啥大的所谓,我的 win11的 license 是和我的 微软账户绑定的。只要我想,重新安装就行了。
-
我没有继续沿用 Win11 + VirutalBox 的核心原因是:虚拟机里,没法访问独立GPU。我没找到可行的方法。这和我的初衷违背。我买这个机器,主要是为了快速跑 wisper 语音转文字服务用的。另一个原因是:VirutualBox 里的 Linux 虚拟机,我后来又遇到几次虚拟机被 Frozen 的情况。就是那种:明明已经虚拟机开机,但是外部就是无法 ssh 访问。我不确定原因是什么。但是与其加这么多中间层,去持续不断地解决各种中间环节引入的诡异问题,不如索性直接撤掉所有的中间层。
- 我的4070Ti的主机,安装 Linux Server后,闲置状态下,大约是 50w 功率(不包含显示器等任何外设)。还可以接受。我专门用那种带读数的插座测的。日本电费真的太贵了。如果闲置还要几百瓦的功率,我可能真的要权衡下,是不是先关机收起来。另外,windows系统,差不多也是这个功率,区别是 windows系统,功率表时不时会跳到130w左右。总体上来说,估计两个系统的耗电,闲置状态下,应该不会相差太多。另外,显示器我也独立测试了下,功率大约是 15w左右,比我预想的要小很多。
- 新系统,估计又有设置 ssh公钥登录。可以参考我这篇:「速记」兼容Windows和Linux系统,将本地公钥添加到远端Linux服务器,以支持公钥自动登录
- 另外还有一个促使我格式化掉windows系统的原因是:这个机器有点吵,放卧室太吵了。即使是闲置状态下,也能听到低音。但是放隔壁,如果想打游戏,又不得不搬过来。挺折腾的。索性就格调windows,断了这个念想。
- 新系统,一般初始设置密码较为简单。后续设置为 ssh 登录后,最好设置个复杂的密码。
passwd