事情是这样的,由于自己需要使用代理,公司有专线 ,跳板机 vpn ,合作方 vpn (windows 客户端) 等各种网络情况下,使用起来比较麻烦,之前就使用 ss-tproxy 脚本配置,但是局限于不能分流到多个出口(修改脚本折腾下也可以)。于是就想能不能集合 透明代理,dns, ip 分流到一起,这个方案貌似sign-box完全可以解决,但是不想要那么多功能,且还需要去理解他的配置,就想着让 AI 搓一个自己想要的。

  • 大致是这样的
                 Internet
                    |
                    |
              +-------------+
              |  Remote     |
              | Proxy       |
              | Encrypted   |
              | Proxy Server|
              +-------------+
                    ^
                    |
                    |
              encrypted tunnel
                    |
                    |
+------------------------------------------------+
|                 zproxy host                    |
|                                                |
|  +-----------+       +----------------------+ |
|  | nftables  | ----> |       zproxy         | |
|  | TPROXY    |       |                      | |
|  +-----------+       |  rule engine         | |
|        ^             |  DNS resolver        | |
|        |             |  proxy selector      | |
|        |             +----------------------+ |
|        |                       |              |
|        |                       v              |
|  +-------------+       +----------------+     |
|  | Application |       | Proxy Client   |     |
|  | curl/browser|       | (encrypted)    |     |
|  +-------------+       +----------------+     |
+------------------------------------------------+

主要就是 nftables + TPROXY 拦截流量, 配置 ip 的 nft set 路由规则,dns 解析后根据规则设置到不同出口的nft set

编译后二进制大小 < 1mb, 运行内存占用 < 20mb

项目地址 zproxy