需求是这样的: 局域网内有一个 linux 设备(192.168.1.2)运行着代理程序,它暴露了一个端口(7890)供局域网访问。
99% 的场景是用浏览器插件(smartproxy/switchyomega 等)设置这个 linux 代理(192.168.1.2:7890)。
但 1% 的场景下会用系统代理或者命令行代理:
快捷设置系统代理: https://gist.github.com/FaiChou/954590636043b01206b468ee34be6f2b
设置命令行代理:
~ which proxyon proxyon () { export https_proxy="http://192.168.1.2:7890" export http_proxy="http://192.168.1.2:7890" export all_proxy="http://192.168.1.2:7890" echo Proxy On } ~ which proxyoff proxyoff () { unset https_proxy unset http_proxy unset all_proxy echo Proxy Off } 但是很多应用它并不会走系统代理,也就是说设置系统代理无效。
这种情况下,如果使用 GUI 工具比如 clash-party, clash-verge-rev, surge 等,它们会有一个增强模式,也就是新建一个虚拟网卡并且修改系统的路由表,这样就可以把所有流量接管到此网卡,由于这是工作在更底层(非应用层代理),所以不走系统代理的软件也会强制走代理。
但是像我这种使用“旁路由”情况下,如果遇到想开增强模式情景下(比如 antigravity )还要再开上面提到的这些工具,然后配置文件只有 socks://192.168.1.2:7890 未免太过于浪费。
所以想找一下有没有更纯净的工具?
找了下有下面 3 款,但都不是很喜欢:
Proxifier
功能很强大,可以根据规则来匹配哪些应用走代理,哪些不走。原理不是虚拟网卡,而是 API hook 。缺点是收费有一点贵(仅对我这个需求来讲)。
proxychains-ng
仅用于命令行工具,比如 curl 等。而且好像系统自带的 curl 不行(需要关 SIP),只能用第三方(比如 brew)安装的命令行代理。
xjasonlyu/tun2socks
这工具看名字就知道完美匹配我的此场景。但需要手动起一个 tun 虚拟网卡,手动配置路由规则,稍有不慎网络可能进入死循环。关闭软件也是需要移除此路由规则,否则无法联网。所以此命令行工具像是一个手动挡。缺点就是需要手动配置,小白不友好。
除此之外,macOS 还有没有类似 tun2socks 这样功能的 GUI 工具?
