之前使用Cloudflare Zero Trust主要是为了白嫖他们家免费的wrap的VPN来隐藏ip,然后顺便得到个ipv6的地址。
还有一个是把内网的一些网站,通过他们的cloudflared tunnel把他们暴露到公网上去。
这次本文是通过Cloudflare能访问家里的内网


Cloudflare 注册和Cloudflare Zero Trust注册

这些就不多说了,按网站上的操作一步一步来就行了。

Cloudflare Zero Trust用户权限配置

这里都是使用的电子邮箱📧进行配置的

注册用户信息

  1. Cloudflare Zero Trust -> My Team -> Lists
  2. 点击Create manual list
    2.1 List name随便取一个,这里我就取default了
    2.2 List type选User Emails
    2.3 右侧Add entry输入自己后面用来鉴权的邮箱
    2.4 点击保存

配置鉴权组

  1. Cloudflare Zero Trust -> Access -> Access groups
  2. 点击Add a group
    2.1 Group name随便取一个,这里我就取default了
    2.2 Include的Selector选Email List,Value选default就行(之前配置的Lists名字)
    2.3 点击Save

启用邮箱鉴权

  1. Cloudflare Zero Trust -> Settings -> Authentication
  2. 如果下面Login methods里面有One-time PIN就不用管了,没有的话点击Add New加进去

Wrap Client权限配置

  1. Cloudflare Zero Trust -> Settings -> WARP Client
  2. 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就行
  3. Save

Cloudflare Tunnel(隧道) 配置

创建

  1. Cloudflare Zero Trust -> Access -> Tunnels
  2. 点击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
2
sysctl -w net.core.rmem_max=2500000
sysctl -w net.core.wmem_max=2500000

检查

  1. Cloudflare Zero Trust -> Access -> Tunnels
  2. 看看你刚刚创建的tunnel的status那里是不是HEALTHY,如果是就没问题,如果不是就要排查一下问题

网络配置

这里我们假设内网的网段是192.168.100.0/24

注册内网

  1. Cloudflare Zero Trust -> Access -> Tunnels
  2. 点击刚刚创建的tunnel,然后点击右边的configure
  3. 点击上方的Private Network,然后点击Add a private network
  4. 然后CIDR那一栏输入192.168.100.0/24

允许连上Wrap后在外网访问内网

  1. Cloudflare Zero Trust -> Settings -> WARP Client
  2. Device settings -> Profile Settings -> Default
  3. 点击右侧的Configure
  4. Split Tunnels里面这一栏选中Exclude IPs and domains(因为我这边是用的全局代理)
  5. 点击右边的Manage
  6. 把右侧的192.168.0.0/16给删掉(这里删掉后,整个192.168.0.0/16网段都会走VPN,如果有其他网络需求可以按需加上,只要不把192.168.100.0/24放在里面就行)
  7. 点击Save

允许连上Wrap后在自己的内网访问内网

为什么要写这个呢,因为上面的操作,Default上都会走VPN,然后目前Warp在内网是没法访问内网的,我们这里要配置个Managed Network

配置Managed Network

更细节的文档可以看他们Cloudflare官方文档

  1. Cloudflare Zero Trust -> Settings -> WARP Client
  2. Network locations -> Managed networks -> Add New
  3. Name 随便填写一个,我这里就填一个Intranet
  4. 这里要找一台内网配了HTTPS的网站做信标,一般选路由器啊,NAS,或者打印机就行都行,如果没有的话那就自己在内网搭建一个咯
  5. 然后Host and Port这里填写你网配了HTTPS的网站的地址和端口,比如我路由器的地址是https://192.168.100.1,那么这里填写192.168.100.1:443
  6. 然后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右边的字符串
    image-2023102401
  7. 填入TLS Cert SHA-256,然后点击Save

配置Intranet的Profile

  1. Cloudflare Zero Trust -> Settings -> WARP Client
  2. Device settings -> Profile Settings -> Create profile
  3. Name随便起一个,我这里取的Intranet
  4. Build an expression
    4.1 Selector选Managed Network
    4.2 Operator选is
    4.3 Value选我们刚刚创建的Managed Network,我这里就选的Intranet
  5. 拖到最下面,点击Create profile
  6. 回到Cloudflare Zero Trust -> Settings -> WARP Client
  7. Device settings -> Profile Settings -> 刚刚创建的Profile(我这里是Intranet)
  8. 点击右侧的Configure
  9. Split Tunnels里面这一栏选中Exclude IPs and domains(因为我这边是用的全局代理),保存
  10. 点击右边的Manage
  11. 看看右侧有没有192.168.0.0/16或者192.168.100.0/24,没有的话执行下面几步
  12. 左侧Selector选Address,然后Value填写192.168.100.0/24,然后点击Save Destination

关闭TLS解密(可选)

因为开启TLS解密要装他们的根证书,还有就是一些HTTPS启用了证书绑定之类的可能无法使用,所以我这边是关闭了的

关闭根证书安装

  1. Cloudflare Zero Trust -> Settings -> WARP Client
  2. Global settings -> Install CA to system certificate store 改成Disabled

关闭TLS解密

  1. Cloudflare Zero Trust -> Settings -> Network
  2. Firewall -> TLS decryption 改成Disabled

总结

完成上面必要步骤后,就可以连上Wrap之后在外面愉快的访问内网了🎉