[求助] macOS Sequoia 15.2 系统代理问题,部分应用无法走系统代理

123 天前
 Sh4wnny

问题描述

我目前遇到了一个关于 macOS 系统代理的问题,具体情况如下:

系统环境:macOS Sequoia 15.2
网络连接:有线连接公司内网,使用静态 IP
代理设置:在系统偏好设置中配置了 system proxy 才能访问外网

具体问题

正常工作的应用:Edge 浏览器等应用可以正常访问外网

不能正常工作的应用

尝试和发现

我怀疑是 system proxy 并没有代理到全部的网络流量,于是尝试使用了 Proxifier 进行全局代理(而不是使用 system proxy )。结果发现:

我的疑问

  1. 这是否为 macOS system proxy 的系统 bug ?
  2. 为什么有些应用可以正常使用系统代理,而另一些则不行?
  3. 有没有其他解决方案可以不依赖 Proxifier 但让所有应用都能走代理?

感谢各位 V 友的帮助!

2108 次点击
所在节点    macOS
17 条回复
EchoWhale
123 天前
走不走系统代理由应用程序决定。
有的走系统代理,有的需要单独设置,有的完全不走代理。

这就是为什么需要“透明代理”,它作为网关代理经过的所有流量。

不想付费 proxifier ,你试试 clash/shadowrocket 之类软件的增强模式/VPN 模式
najunuoyan
123 天前
@EchoWhale 1 楼正解
EVJohn
123 天前
你试试 surge 的虚拟 tun
1002xin
123 天前
如一楼所说,Surge 、Clash 增强模式可解
Sh4wnny
123 天前
@EchoWhale
@EVJohn
@1002xin
感谢回复!

我在设置 proxifier 的时候,需要勾选“Use target hostname in proxy request if available” 才可以访问外网,但是在使用 Surge 和其他网络代理工具的时候似乎没有看到类似的选项,猜测代理服务器是否可能通过本地的 mac 地址或者 ip 来判断是否代理? Surge 或者 Clash 的增强模式,虚拟网卡是否会改变本地的某种特征让代理服务器无法识别呢?使用 Surge 的时候显示代理服务器超时
(如果有常识性错误请多包涵)
KingZZZZ
123 天前
proxifier 有免费激活码
MacsedProtoss
123 天前
@Sh4wnny 你这种情况需要 surge 中加一个节点 这个节点是那个 http proxy 然后用增强模式接管所有流量都走那个 proxy
你们公司的网络方案还是太原始了…怎么还用手动配代理的形式啊
MacsedProtoss
123 天前
@Sh4wnny use target hostname 意思应该是 dns 解析也走 proxy 吧 而不是先解析完再去 proxy 那边用 IP 来访问
surge 之类的软件默认就是命中了代理规则的都是走代理的 dns 的应该是没啥问题
另外你也应该学一下基础的计算机网络,这里的网络应该是 router - Mac en0 - Mac surge tun - Mac app 不会影响到 router - Mac en0 这块的 也没有你提出的啥代理服务器无法识别的问题
263
123 天前
因为 Terminal 是绕过 macOS 的网络框架的,直接发起网络请求,所以不会走系统代理,需要单独配置,或则在局域网搭建透明代理。

本地配置 ~/.zshrc 内加入,自动获取 en0 网卡 ip (可根据自身网卡更改)配置代理,proxy_port 替换为自己实际的,no_proxy 添加自己绕过需代理的,配置好以后重启 Terminal ,Terminial 输入 Proxy on 开启代理,Proxy off 关闭代理:
function proxy() {
local ip=$(ipconfig getifaddr en0)
export all_proxy="socks5://$ip:proxy_port"
export http_proxy="http://$ip: proxy_port"
export https_proxy="http://$ip: proxy_port"
export no_proxy="npmjs.org"
echo "Proxy on"
}

function uproxy() {
unset all_proxy http_proxy https_proxy no_proxy
echo "Proxy off"
}

或者直接配置,ip 和端口写死,重启 terminal 直接生效
export all_proxy="socks5://$ip:proxy_port"
export http_proxy="http://$ip: proxy_port"
export https_proxy="http://$ip: proxy_port"
export no_proxy="npmjs.org"
263
123 天前
@263 笔误,是输入 proxy 开启,uproxy 关闭
Sh4wnny
123 天前
@MacsedProtoss 日本 IT 极其落后... 只要东西能用就绝不改

我尝试了添加这个 https proxy 到代理,但是访问一直 fail ,不知道是不是在代理服务器的那里的认证有什么问题
Sh4wnny
123 天前
@263 感谢回复

因为是用的笔记本有时候会带回家,每次使用 terminal 的时候使用 export https_proxy 确实可以让 terminal 走代理,担心如果直接加入本地配置后使用其他网络会有问题,现在暂时还是每次打开 terminal 时单独设置一遍
263
123 天前
所以你可以加两个函数,执行 proxy 开启,uproxy 关闭,灵活一些
Sh4wnny
123 天前
@MacsedProtoss 感谢!刚刚去查看了 Surge 关于 DNS 的描述:“By default, the DNS resolve always happens on the remote proxy server since Surge always sends proxy requests with domains.” 应该就和您之前说的一样不需要特意更改。
因为在传统工科行业网络相关的问题基本很难接触,计算机相关知识也是碰上了问题才去学习,感谢解答
rebounce
123 天前
不要升级,用 Monterey 这种 LTS 版本。
cohen121
122 天前
这里的系统代理可以简单理解为就是一个配置项,程序可以选择读取这个配置+自己内部实现的代理协议走代理。 所以这个系统代理和 让系统流量都走代理是没有任何关系的。
Volekingsg
122 天前
Safari 应该是会遵循系统配置的 System Proxy ,因此建议检查有限网络 DNS 是否设置?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1130559

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX