使用Cloudflare Tunnel配合Loon或者Surge安全访问家里的网络
内网穿透的方案很多,Cloudflare的ZeroTrust产品中Tunnel的功能也是比较常用的那种,虽然速度不快,但是稳定性还可以。本篇记录一下我如何使用Cloudflare tunnel进行内网穿透。
Tunnel的穿透功能主要有两种,一种是public host,即将服务暴露在公网,简单方便添加,默认支持HTTPS访问,应急使用一下还是不错的。另一个是Private network,即私密网络,需要安装Cloudflare WARP客户端(1.1.1.1)才能访问。
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2Fd438f9ea-c9ef-4898-ab16-bc9242467f4e%2F73674c3e-f452-4756-a00c-f1f4ebce1b01%2FIMGC92BE013.png%3Fid%3D9c6f8c2e-5065-4284-a4f3-37d2b7b3dde9%26table%3Dblock%26spaceId%3Dd438f9ea-c9ef-4898-ab16-bc9242467f4e%26expirationTimestamp%3D1721671200000%26signature%3DRw6JZxe7DV9WN7XK4BkuVuBW-MPHIKhNQZkAUP44m-U?table=block&id=9c6f8c2e-5065-4284-a4f3-37d2b7b3dde9&cache=v2)
一、安装Cloudflared
访问zerotrust,点击create tunnel 按照其中指引在本地设备例如NAS或者openwrt路由器上安装
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2Fd438f9ea-c9ef-4898-ab16-bc9242467f4e%2F9a96097f-7b39-44ef-9c27-6d9fe423452e%2FIMG22CA9754.png%3Fid%3D00f5ad06-6861-4d44-a733-499fe90f876c%26table%3Dblock%26spaceId%3Dd438f9ea-c9ef-4898-ab16-bc9242467f4e%26expirationTimestamp%3D1721671200000%26signature%3DRnSXZ_si_D4W4aMKXe2E_Z8i5M7ox9QVoKMcM6eaKEc?table=block&id=00f5ad06-6861-4d44-a733-499fe90f876c&cache=v2)
以下是我的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 这样配置内网的服务地址
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2Fd438f9ea-c9ef-4898-ab16-bc9242467f4e%2F375e9970-f318-40ac-86cf-85a6efd3ba87%2FIMG52361201.png%3Fid%3D4844b8c4-40a6-4feb-96d6-49f11ab23f7e%26table%3Dblock%26spaceId%3Dd438f9ea-c9ef-4898-ab16-bc9242467f4e%26expirationTimestamp%3D1721671200000%26signature%3D8uVJGAai3856ialTXRiVR6OZLUvLKokoSzuEcRv_sgY?table=block&id=4844b8c4-40a6-4feb-96d6-49f11ab23f7e&cache=v2)
这样可以通过外网进行访问内网的服务,无需任何配置。
💡 敏感服务谨慎通过该方式直接暴露地址到外网。
三、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进行访问。
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2Fd438f9ea-c9ef-4898-ab16-bc9242467f4e%2Fb1cff49e-5c22-4462-bc2a-8aa48cf6146d%2FIMG6AC52380.png%3Fid%3De1d45679-fabf-4565-a306-c35eb0d290aa%26table%3Dblock%26spaceId%3Dd438f9ea-c9ef-4898-ab16-bc9242467f4e%26expirationTimestamp%3D1721671200000%26signature%3DlxGYSvGK_sfF3qE10zjGlKPTx-l1h5z3rSq5VEmKIBo?table=block&id=e1d45679-fabf-4565-a306-c35eb0d290aa&cache=v2)
配置Loon或者Surge访问策略
在配置文件中,找skip-proxy配置项,将其中192.168.0.0/16 删除掉,这样取消192.168开头的IP跳过代理。
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2Fd438f9ea-c9ef-4898-ab16-bc9242467f4e%2F4e6af514-4617-4daf-b152-8561d8efb7fc%2FIMGF311B956.png%3Fid%3D3a724f1c-e9c5-4d91-b7f0-aae3eddd9241%26table%3Dblock%26spaceId%3Dd438f9ea-c9ef-4898-ab16-bc9242467f4e%26expirationTimestamp%3D1721671200000%26signature%3DTm-rmHSNmSX5Y5yK8f6A6AVcI2jb7ImOLyZEb0ltk5c?table=block&id=3a724f1c-e9c5-4d91-b7f0-aae3eddd9241&cache=v2)
添加一个SSID策略,让家里wifi走DIRECT,默认走WARP的wireguard代理。
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2Fd438f9ea-c9ef-4898-ab16-bc9242467f4e%2F7b098538-4a08-485f-b151-2cc05c8755d6%2FIMG04CB0921.png%3Fid%3D883f0afd-7a7d-4bc1-8d37-3af19db26333%26table%3Dblock%26spaceId%3Dd438f9ea-c9ef-4898-ab16-bc9242467f4e%26expirationTimestamp%3D1721671200000%26signature%3DflGitJyaQc-WOOD1_ExrkRJXNdxx4gHbRaHXxqnPkDU?table=block&id=883f0afd-7a7d-4bc1-8d37-3af19db26333&cache=v2)
我现在策略组名是 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中转一次,好处就是不需要额外打开一个软件。