按进程名放行
用文件名做豁免名单时,把自己的程序改成那个名字就能直连。云枢 2.5.12.16 的出网控制就是这样被绕过的。这里不读进程名,也不读 PID。
零信任接入 · 出网默认拒绝
agent 同时核对 Team ID、Signing ID、cdhash、域名和端口。规则如果写了完整路径,整条路径也必须一致,而且不能只有路径没有 cdhash。接入点只在单包通过之后,拨 console 里登记的上游。
// 一个 agent · 签名和哈希 · 规则在 console · 上游地址不进单包
缺口
用文件名做豁免名单时,把自己的程序改成那个名字就能直连。云枢 2.5.12.16 的出网控制就是这样被绕过的。这里不读进程名,也不读 PID。
fwknop 验包成功后给来源地址一条临时放行。NAT 后面很多人共用这个地址,上游会直接露出来。我们的单包只签发许可,不给上游加防火墙规则。
进了网段就能扫旁边的机器。这里没有虚拟网卡。接入点只拨 console 里已经写明的那一个上游。
三步
console 跑在 Cloudflare Workers 上,规则进 D1。每次写入都会把快照发到 R2 的 snapshots/current.json。
系统扩展只从 audit token 取出 Team ID、Signing ID、cdhash 和完整路径,交给本机的 Go 进程。300 毫秒没有答复就拒绝,不直连。
UDP 单包用 AES-256-GCM。标签不对就丢,不回包。通过之后的 TLS 还要证明持有这把临时私钥。接入点忽略会话里夹带的地址。
对照
| 能力 | 按进程名 | 按源地址开洞 | 整网 VPN | zerotrust.supply |
|---|---|---|---|---|
| Team ID、Signing ID、cdhash | – | – | – | 有 |
| 完整路径必须连同 cdhash | – | – | – | 有 |
| 单包失败不回包 | – | 有 | – | 有 |
| 不按源地址放行上游 | – | – | – | 有 |
| 只拨已登记的上游 | – | – | – | 有 |
| 执行白名单 | – | – | – | 还没做。要单独向 Apple 申请 Endpoint Security |
系统扩展还没有装到 Mac 上。端口是不是对扫描不可见,还没有在 Linux 上测过,所以这里不这么说。UDP 应用和 QUIC 第一期不转发。
console
用 demo 账号登录就能看到。没有规则时,出网会被拒绝。
打开 console