软路由和 Cloudflare Tunnels 的用途

2022 年 08 月 23 日

实在是受不了给每台机器配置网络了,于是买了个软路由,友善电子的 R5S。

机器拿回家,刷了个看起来差不多的版本,按照官方 wiki 配置好了 PPPoE,然后加上了科学的工具,手头几台设备都可以科学的工作了,真科学。

不过,等等,我发现了什么?!我的公网 IP 呢?!

给电信打电话,原因果然不出所料,装监控的理由也不好用了,那我还怎么愉快的从外面连到家里呢?

然后我发现了这东东,Cloudflare Tunnel。简单说,没有公网 IP 没关系,伟大的 Cloudflare 给你转发。

稍稍跑一下题,说起来,前几年花 50 块买了一个能用 10 年的域名,这笔投资绝对物超所值。由于没法备案(当然我也不想备案),域名被从国内的阿里云一脚踢到新加坡的阿里云。本来用 dnspod 做域名管理,还可以忍。结果某天看到曾经浓眉大眼的 dnspod 也开始封域名,这就不能忍了。我费了不少功夫,精神出国到新加坡,终于把这个域名的管理权转给了 cloudflare。这段时间用下来,呵呵,估计续费的时候,我就直接在 cloudflare 续了。从 Cloudflare Pages,到 Tunnel,加上 DDNS,再加各种 IP 反代,而且大概率还有很多我没发现的好东东,这一站式服务的体验太赞了。

回到正题,这几天遇到封锁,被关在家里出不去,陪伴我的只有一只猫,正是折腾网络的好时机。我观察了一下,虽然 v4 公网地址没了,但 v6 还是可以用的嘛,所以先做一个 ddns v6。参考教程很好找,比如这个。唯一需要注意的是,IP 地址来源要选 wan_6,避免老是获取到内网 v6 地址。

这样,理论上,如果在外面有 v6 地址,就可以直接连上家里的网络了,至于用什么方式,能用 tcp 的那玩意就那几种,不要问我关键字。

但问题只解决了一半,比如公司的网络中,只有 v4 的 NAT,怎么办?

这就轮到 Tunnel 出场了,参考文档在这里。原理如下:

  1. 路由做主机,装上 cloudflared,配置成自动启动,我用的启动脚本。

  2. cloudflare zero trust 的管理面板,建立 tunnel,可以拿到证书。

  3. 将证书放在路由上特定路径,通过 cloudflared service 命令卸载后重新安装。

  4. 此时就能在管理面板上看到 Tunnel 状态被激活了。接下来就可以配置:

    1. 域名,可以将某个域名映射到家里的某台机器上,http 或 https 都可以。对于这个特定场景,用 tcp。
    2. 内网,其实本来可以直接用 WARP 连到路由所在的内网,不用折腾。但可惜的是,android 上压根无法打开。
  5. 对于 tcp 场景,需要在客户端再跑一个 cloudflared 做本地端口转发。

理论上,这样就可以在 v4 环境下,用某些关键字应用了。

P.S. 实际验证了一下,似乎还是有些问题。主要原因似乎是,没有 v6 的环境下,我是用 127.0.0.1 连接到本地用来转发的端口。通倒是通了,但分配的 IP 感觉不对,也不能访问远端内网。看来,这里还有很多折腾的空间。

Top