事情是这样的,由于自己需要使用代理,公司有专线 ,跳板机 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