需求是这样的: 局域网内有一个 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 工具?
现在 surge 已经不用 utun 模式了,也是用的 macOS Network Extension。
所以现在代理工具可以划分为 4 类:
只跑一个核心,开一个端口供设备使用。
使用 clash-party, clash-verge-rev 等工具开系统代理,也就是相当于在系统的 wifi 里手动配置代理,或者命令行 networksetup -setwebproxy "Wi-Fi" "$HOST" "$PORT"
新建一个虚拟网卡,修改路由规则,接管所有 ip packet,由于是更底层,可以解决第二种系统代理可能被某些应用 bypass 的问题。
另外设置某设备作为网关(比如路由器跑透明代理)也是和这个类似,只不过此虚拟网卡在本地。
这类工具使用 networkextension 开发,功能最强大,比如 surge v5 v6,proxifier v3, tinyshield 等。解决了第三种虚拟网卡模式流量包不会包含进程名等信息。
1
ethusdt OP 对了,忘记提 dae 了,liux 下基于 ePBF 的透明代理。可惜不支持 macOS 。
|
3
gooin 6 天前
有 mac 客户端啊,2 楼正解,正在用
|
6
Naykcin 6 天前
这个问题我研究过,很遗憾,没有替代,最优的解决方案就是使用 Proxifier macOS 客户端。其他的网络代理工具要么规则很冗长繁复,要么太极简了。
如果命令行程序支持代理配置,还是优先建议直接用原生支持的配置,比如 curl 支持`--socks5-hostname`,git 有.gitconfig 。如果不支持或者对于 APP 使用代理,Proxifier 就是最优解。 |
7
gefangshuai 6 天前
surge 。proxifier 本质上也是“增强模式”。不如直接用 clash 系列的 tun
|
8
NessajCN 6 天前
你那台 Linux 设备有两个网卡的话直接给他弄成路由,然后直接路由端透明代理
|
10
Moishine 6 天前
|
13
dosmlp 6 天前
proxifier 我记得 Windows 版本注册码一堆,macos 不知道
tun2socks 写个脚本添加删除路由就行了 |
15
legendBro 6 天前
Proxifier 网上有免费的破解版
|
16
yuchen198 6 天前
TUN 模式没啥浪费的,可惜不支持安卓系统这种 VPN 分应用代理模式。慎用 Proxifier 破解版,我两年前中过招,在 Windows 上用,是个病毒程序,把我 Chrome 浏览器保存的密码和很多网站的账号 Cookie 给盗了,电脑直接卡死...
|
17
SenLief 5 天前
xjasonlyu/tun2socks 好像也不能按进程吧?
|
20
383394544 5 天前 via iPhone
你为什么不在旁路由上设置规则,不是都在同一个局域网内吗?
|
22
EchoWhale 5 天前 via iPhone
这不就是透明代理的典型应用场景吗?
把你本机的号码网关地址指向 linux ,然后配置 linux 上运行的代理软件,打开它的透明代理模式 |
23
ethusdt OP @EchoWhale 这种太侵入了,你的 qq/微信等所有应用的流量都会走这个网关,相当于 utun 虚拟网卡模式,没啥区别。这种模式就严重依赖分流规则了。
|
24
HADB 5 天前
whistle?
|
25
ethusdt OP @HADB 这种属于抓包工具了,更推荐 https://proxyman.com/
|
26
123test1010 5 天前
非 tun 模式下,很多程序 surge 还是不支持进程规则的,想要劫持流量还得是 tun
|
27
chzhx 5 天前
都已经旁路由了,何不搞成透明代理,比如 passwall 更简单易用,你的 7890 应该是 openclash
#23 终端用 switchyomega 也不是“严重依赖分流规则”?有什么区别? |