需求是这样的: 局域网内有一个 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 款,但都不是很喜欢:
功能很强大,可以根据规则来匹配哪些应用走代理,哪些不走。原理不是虚拟网卡,而是 API hook 。缺点是收费有一点贵(仅对我这个需求来讲)。
仅用于命令行工具,比如 curl 等。而且好像系统自带的 curl 不行(需要关 SIP),只能用第三方(比如 brew)安装的命令行代理。
这工具看名字就知道完美匹配我的此场景。但需要手动起一个 tun 虚拟网卡,手动配置路由规则,稍有不慎网络可能进入死循环。关闭软件也是需要移除此路由规则,否则无法联网。所以此命令行工具像是一个手动挡。缺点就是需要手动配置,小白不友好。
除此之外,macOS 还有没有类似 tun2socks 这样功能的 GUI 工具?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.