Cloudflare Zero Trust VPN内网接入
之前使用Cloudflare Zero Trust主要是为了白嫖他们家免费的wrap的VPN来隐藏ip,然后顺便得到个ipv6的地址。
还有一个是把内网的一些网站,通过他们的cloudflared tunnel把他们暴露到公网上去。
这次本文是通过Cloudflare能访问家里的内网
Cloudflare 注册和Cloudflare Zero Trust注册
这些就不多说了,按网站上的操作一步一步来就行了。
Cloudflare Zero Trust用户权限配置
这里都是使用的电子邮箱📧进行配置的
注册用户信息
- Cloudflare Zero Trust -> My Team -> Lists
- 点击Create manual list
2.1 List name随便取一个,这里我就取default了
2.2 List type选User Emails
2.3 右侧Add entry输入自己后面用来鉴权的邮箱
2.4 点击保存
配置鉴权组
- Cloudflare Zero Trust -> Access -> Access groups
- 点击Add a group
2.1 Group name随便取一个,这里我就取default了
2.2 Include的Selector选Email List,Value选default就行(之前配置的Lists名字)
2.3 点击Save
启用邮箱鉴权
- Cloudflare Zero Trust -> Settings -> Authentication
- 如果下面Login methods里面有One-time PIN就不用管了,没有的话点击Add New加进去
Wrap Client权限配置
- Cloudflare Zero Trust -> Settings -> WARP Client
- Device enrollment -> manage
2.1 Rules
2.1.1 Add a rule
2.1.2 Rule name填个email rules
2.1.3 Assign a group选中上面配置的default
2.1.4 Save
2.2 Authentication
2.2.1 选中One-time PIN就行 - Save
Cloudflare Tunnel(隧道) 配置
创建
- Cloudflare Zero Trust -> Access -> Tunnels
- 点击Create a tunnel,然后取个名,然后点击Save Tunnel
安装
按照他们下面的方法安装就行
关于docker我顺嘴提一句最好把命令从官方的
1 | docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token xxxxxx |
改成
1 | docker run -d --restart=always cloudflare/cloudflared:latest tunnel --no-autoupdate run --token xxxxxx |
这样docker就能自动重启,然后是在后台运行
Trouble Shooting
启动之后注意看下日志,我之前碰到的如下报错
1 | 2023/10/23 03:20:59 failed to sufficiently increase receive buffer size (was: 208 kiB, wanted: 2048 kiB, got: 416 kiB). See https://github.com/quic-go/quic-go/wiki/UDP-Receive-Buffer-Size for details. |
我直接按照他们的提示,打开了日志里面的网站,看上去是系统fd不够,然后执行了如下命令
1 | sysctl -w net.core.rmem_max=2500000 |
检查
- Cloudflare Zero Trust -> Access -> Tunnels
- 看看你刚刚创建的tunnel的status那里是不是HEALTHY,如果是就没问题,如果不是就要排查一下问题
网络配置
这里我们假设内网的网段是192.168.100.0/24
注册内网
- Cloudflare Zero Trust -> Access -> Tunnels
- 点击刚刚创建的tunnel,然后点击右边的configure
- 点击上方的Private Network,然后点击Add a private network
- 然后CIDR那一栏输入192.168.100.0/24
允许连上Wrap后在外网访问内网
- Cloudflare Zero Trust -> Settings -> WARP Client
- Device settings -> Profile Settings -> Default
- 点击右侧的Configure
- Split Tunnels里面这一栏选中Exclude IPs and domains(因为我这边是用的全局代理)
- 点击右边的Manage
- 把右侧的192.168.0.0/16给删掉(这里删掉后,整个192.168.0.0/16网段都会走VPN,如果有其他网络需求可以按需加上,只要不把192.168.100.0/24放在里面就行)
- 点击Save
允许连上Wrap后在自己的内网访问内网
为什么要写这个呢,因为上面的操作,Default上都会走VPN,然后目前Warp在内网是没法访问内网的,我们这里要配置个Managed Network
配置Managed Network
更细节的文档可以看他们Cloudflare官方文档
- Cloudflare Zero Trust -> Settings -> WARP Client
- Network locations -> Managed networks -> Add New
- Name 随便填写一个,我这里就填一个Intranet
- 这里要找一台内网配了HTTPS的网站做信标,一般选路由器啊,NAS,或者打印机就行都行,如果没有的话那就自己在内网搭建一个咯
- 然后Host and Port这里填写你网配了HTTPS的网站的地址和端口,比如我路由器的地址是https://192.168.100.1,那么这里填写192.168.100.1:443
- 然后TLS Cert SHA-256我们要去拿这个https://192.168.100.1 网页的证书的指纹,这里我们直接拿Google Chrome浏览器拿就行
6.1 用Google Chrome进入https://192.168.100.1
6.2 点地址栏左边的那把小锁🔒,或者点击那个红色的Not Secure
6.3 然后点击Connection is secure然后点击Certificate is valid。或者点击Certificate is not valid
6.4 这个时候弹出了如下图的窗口,然后复制SHA-256 Fingerprints里面Certificate右边的字符串 - 填入TLS Cert SHA-256,然后点击Save
配置Intranet的Profile
- Cloudflare Zero Trust -> Settings -> WARP Client
- Device settings -> Profile Settings -> Create profile
- Name随便起一个,我这里取的Intranet
- Build an expression
4.1 Selector选Managed Network
4.2 Operator选is
4.3 Value选我们刚刚创建的Managed Network,我这里就选的Intranet - 拖到最下面,点击Create profile
- 回到Cloudflare Zero Trust -> Settings -> WARP Client
- Device settings -> Profile Settings -> 刚刚创建的Profile(我这里是Intranet)
- 点击右侧的Configure
- Split Tunnels里面这一栏选中Exclude IPs and domains(因为我这边是用的全局代理),保存
- 点击右边的Manage
- 看看右侧有没有192.168.0.0/16或者192.168.100.0/24,没有的话执行下面几步
- 左侧Selector选Address,然后Value填写192.168.100.0/24,然后点击Save Destination
关闭TLS解密(可选)
因为开启TLS解密要装他们的根证书,还有就是一些HTTPS启用了证书绑定之类的可能无法使用,所以我这边是关闭了的
关闭根证书安装
- Cloudflare Zero Trust -> Settings -> WARP Client
- Global settings -> Install CA to system certificate store 改成Disabled
关闭TLS解密
- Cloudflare Zero Trust -> Settings -> Network
- Firewall -> TLS decryption 改成Disabled
总结
完成上面必要步骤后,就可以连上Wrap之后在外面愉快的访问内网了🎉
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Jose!