注:文章的前提是已经在 Nas/或其他设备 上安装cloudflared,通过Cloudflare Tunnel暴漏本机内网服务至公网
家庭中局域网内部一般并不是只有一个需要内网穿透的服务,抛开 Nas 除外,像 Openwrt 软(๐•ᴗ•๐)由,或 其他24小时运行的小主机 总是跑着一些需要外网访问的内网私有服务,但是给每台设备安装cloudflared 进行 Tunnel 穿透又非常麻烦
本篇文章将讲解如何在一台设备上安装 Cloudflared 的同时暴漏整个家庭内网,并且可以保证基本的安全性 (仅使用已经登录自己 Team 的 WARP 可以访问)。如果我在公网想访问暴漏的家庭内网,需要使用 WARP 作为客户端,连接到 Cloudflare 网络,通过Nas上配置好的 Cloudflare Tunnel 连接至整个内网
图片来自 Cloudflare 官方博客
效果
我当前在公网环境中,在我的设备上安装 WARP 并登录到 Team 团队中,假设我家里的内网网段为 192.168.10.1/24 ,当我打开 WARP 后,可以在浏览器中直接访问 192.168.10.1 到(๐•ᴗ•๐)由器管理页面,访问192.168.10.190 到 Nas 管理页面。
配置允许注册到Teams中的Warp设备
由于加入到该 Team 的设备都将免除认证的访问内网服务,第一部则是需要限制能加入自己 Team 的设备。
登录 Zero Trust ,进入 ”Settings → WARP Client → Device Enrollment“ 的管理页面,在右侧 Rule 中添加规则和标准来判定哪些用户可以被允许加入到当前 Team 中
在这里同样可以同时配置多个 Include、Exclude 和 Require,来精确可以加入到 Team 中的设备,但也要小心,如果我在某个 Application 中配置了 ”此 Teams 中的所有用户跳过验证“ 等类似的策略,那么 无意/故意 加入到 Teams 中的设备将同样可以不经过验证访问被保护的应用
同样,加入到别人的 Teams 中则会被当前 Teams 的管理者 查看、监视和管理,按理说管理员有能力知道每个设备访问的所有网站,也有能力限制和篡改每个网络连接。所以不建议加入到不熟悉人管理的 Teams 中
如果我要配置 仅自己主用的 abc@gmail.com 和 abc@ou(๐•ᴗ•๐)ook.com 可以添加和注册设备,创建一个 Rule,在 Include 中配置 Email 为 abc@gmail.com 和 abc@ou(๐•ᴗ•๐)ook.com 即可
开启 Gateway Proxy
进入Zero Trust 的 ”Settings → Network” 设置界面,开启 Firewall 中的 Proxy 选项,并勾选 TCP、UDP 和 ICMP。这将允许这些网络流量通过 Gateway 进行监控管理和网络优化
配置 WARP Device Profile
Profile (配置文件) 决定了 WARP客户端如何接管网络流量,我们需要了解的有三个,分别是:Service mode, Local Domain Fallback 和 Split Tunnels
Service Mode 服务模式
可以简单理解为网络模式,默认为 Gateway with WARP,即接管所有网络流量。同时还可以修改为 Gateway with DoH (只保护DNS流量) 等。具体模式的区别可查看官方文档,这里保持默认不变即可。
Local Domain Fallback
在这里我们可以自定义域名的DNS解析器,设置域名不经过整个 Cloudflare 网络的过滤和管理。
默认列表中已经设置了一些例子,比如 localhost 默认代表本地主机,添加 localhost 到 Local Domain Fallback 中即可让访问 localhost 的流量不经过整个 Cloudflare 网络
再举个栗子:比如我想让 nas.home 通过本地 192.168.10.1 的DNS私有服务器解析到 Nas 的内网地址,可以配置 nas.home 域 和相应的内网 DNS 服务器
Split Tunnels
Split Tunnels 用于决定 WARP 如何处理流量,其中分为 Include 和 Exclude 模式,默认为 Exclude 模式。Exclude 模式代表了仅在配置列表中的IP和域名不会通过WARP网络;而Include模式相反,仅包含在配置列表中的IP和域名会通过WARP网络
进入Zero Trust 的 ”Settings → WARP Client → Device Setting” 中新建一个 Profile 配置文件,我这里命名为 Home。下滑到 Step 2,将希望应用此配置的设备邮箱,比如我希望我自己的设备都使用这(๐•ᴗ•๐)配置,所以填入我的邮箱是 abc@gmail.com 和 abc@ou(๐•ᴗ•๐)ook.com,这样的话只要使用我这两个邮箱登录的设备都会自动应用这(๐•ᴗ•๐)配置。
由于(๐•ᴗ•๐)的原因,WARP 国内的访问体验并不太好,所以我只希望内网网段可以通过 WARP,只用于访问家里的内网服务,所以下滑到 Split Tunnel 选项,但是现在提示 该设置在配置文件创建前不可更改,所以先通过右下角的 Create 创建配置文件。再次进入该配置文件的编辑页面,把 Split Tunnel 从 ”Exclude IPs and domains“ 换成 ”Include IPs and domains“,点击右侧 Manage进入管理页面,将自己家的网段 (比如我的是 192.168.10.1/24 ) 填入
配置 Cloudflare Tunnel
进入到 Nas 的 Tunnel 配置页面,找到 Private Network 页面,将相同的网段填入保存即可。
在本地Warp客户端中登录Team
在1.1.1.1官网下载对应版本的 warp 客户端,这里以 Windows 客户端举例,打开设置中的账户选项,右下角选择登录到 Cloudflare Zero Trust Teams,输入自己的 Team 名称后进行登陆验证。登陆完成后在 Zero Trust 网页端的 My Teams → Devices 即可看到登陆的设备
在公网中开启 WARP 直接在浏览器尝试访问 192.168.10.1 即可正常打开(๐•ᴗ•๐)由器管理界面,同样访问 Nas 在内网中的IP也可以正常访问 Nas 的相关服务。除了Web程序,SSH 也是可以连接的
PS C:\Users\baiiylu> ssh baiiylu@192.168.10.190
baiiylu@192.168.10.190's password:
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}