使用Cloudflare Tunnel配合Loon或者Surge安全访问家里的网络
内网穿透的方案很多,Cloudflare的ZeroTrust产品中Tunnel的功能也是比较常用的那种,虽然速度不快,但是稳定性还可以。本篇记录一下我如何使用Cloudflare tunnel进行内网穿透。
Tunnel的穿透功能主要有两种,一种是public host,即将服务暴露在公网,简单方便添加,默认支持HTTPS访问,应急使用一下还是不错的。另一个是Private network,即私密网络,需要安装Cloudflare WARP客户端(1.1.1.1)才能访问。
一、安装Cloudflared
访问zerotrust,点击create tunnel 按照其中指引在本地设备例如NAS或者openwrt路由器上安装
以下是我的compose文件,供参考
version: "3" services: tunnel: container_name: cloudflared-tunnel image: cloudflare/cloudflared network_mode: host restart: unless-stopped command: tunnel run environment: - TUNNEL__TOKEN=替换你的token - no-autoupdate=true
安装注册后,看到添加tunnel为health状态即可下一步。
二、Public Host,公开访问
前置条件
- 在Cloudflare中添加有域名,并且有开通Zerotrust
- 在内网环境安装Cloudfared
添加服务配置
在Zerotrust的Tunnels下面选择public hostname 这样配置内网的服务地址
这样可以通过外网进行访问内网的服务,无需任何配置。
💡 敏感服务谨慎通过该方式直接暴露地址到外网。
三、Private Network 功能,私有网络
前置条件
有通过surge或者loon获取到WARP team的wireguard连接信息,参见该教程
有surge或者Loon,Clash.meta或者Stash理论上应该也可以,未测试过。
在tunnel中添加一个private network
添加private network时,ip-cidr填写家里的网络CIDR。
家里一般是192.168.X.X的,填写 192.168.X.0/24 表示 192.168.X.0-192.168.X.255 都可以通过tunnel进行访问。
配置Loon或者Surge访问策略
在配置文件中,找skip-proxy配置项,将其中192.168.0.0/16 删除掉,这样取消192.168开头的IP跳过代理。
添加一个SSID策略,让家里wifi走DIRECT,默认走WARP的wireguard代理。
我现在策略组名是 HOME ,你可以修改成其他名称。
在配置文件中添加规则,注意下方的 192.168.2 改成自己家网段。
[Rule] IP-CIDR,192.168.2.0/24,HOME,no-resolve #要放在前面,2改成自己网段 IP-CIDR,192.168.0.0/16,DIRECT,no-resolve #放在上面一行的后面
经过如上配置后,连上家里wifi时,访问家里设备直连。在外面的时候,如果你和我一样,总是保持surge或者loon是连接上的,那么可以直接通过 192.168.X.X 访问家里的网络。
相对tailscale或者zerotier,使用cloudflare的tunnel访问家里的网络无法使用直连的方式,只能通过cloudflare中转一次,好处就是不需要额外打开一个软件。