V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Sh4wnny
V2EX  ›  macOS

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

  •  
  •   Sh4wnny · 43 天前 · 1818 次点击
    这是一个创建于 43 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题描述

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

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

    具体问题

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

    不能正常工作的应用

    • Safari 浏览器无法浏览外网(访问内网正常)
    • Firefox 浏览器无法浏览外网(访问内网正常)
    • App Store 无法连接
    • Terminal 中的 Homebrew 无法正常使用

    尝试和发现

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

    • 使用 Proxifier 后,Safari 和 Terminal 均可以正常访问网络
    • 但 Proxifier 只有 30 天免费试用期

    我的疑问

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

    感谢各位 V 友的帮助!

    17 条回复    2025-05-10 16:33:47 +08:00
    EchoWhale
        1
    EchoWhale  
       43 天前 via iPhone
    走不走系统代理由应用程序决定。
    有的走系统代理,有的需要单独设置,有的完全不走代理。

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

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

    我在设置 proxifier 的时候,需要勾选“Use target hostname in proxy request if available” 才可以访问外网,但是在使用 Surge 和其他网络代理工具的时候似乎没有看到类似的选项,猜测代理服务器是否可能通过本地的 mac 地址或者 ip 来判断是否代理? Surge 或者 Clash 的增强模式,虚拟网卡是否会改变本地的某种特征让代理服务器无法识别呢?使用 Surge 的时候显示代理服务器超时
    (如果有常识性错误请多包涵)
    KingZZZZ
        6
    KingZZZZ  
       43 天前
    proxifier 有免费激活码
    MacsedProtoss
        7
    MacsedProtoss  
       43 天前 via iPhone
    @Sh4wnny 你这种情况需要 surge 中加一个节点 这个节点是那个 http proxy 然后用增强模式接管所有流量都走那个 proxy
    你们公司的网络方案还是太原始了…怎么还用手动配代理的形式啊
    MacsedProtoss
        8
    MacsedProtoss  
       43 天前 via iPhone
    @Sh4wnny use target hostname 意思应该是 dns 解析也走 proxy 吧 而不是先解析完再去 proxy 那边用 IP 来访问
    surge 之类的软件默认就是命中了代理规则的都是走代理的 dns 的应该是没啥问题
    另外你也应该学一下基础的计算机网络,这里的网络应该是 router - Mac en0 - Mac surge tun - Mac app 不会影响到 router - Mac en0 这块的 也没有你提出的啥代理服务器无法识别的问题
    263
        9
    263  
       43 天前
    因为 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
        10
    263  
       43 天前
    @263 笔误,是输入 proxy 开启,uproxy 关闭
    Sh4wnny
        11
    Sh4wnny  
    OP
       43 天前
    @MacsedProtoss 日本 IT 极其落后... 只要东西能用就绝不改

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

    因为是用的笔记本有时候会带回家,每次使用 terminal 的时候使用 export https_proxy 确实可以让 terminal 走代理,担心如果直接加入本地配置后使用其他网络会有问题,现在暂时还是每次打开 terminal 时单独设置一遍
    263
        13
    263  
       43 天前
    所以你可以加两个函数,执行 proxy 开启,uproxy 关闭,灵活一些
    Sh4wnny
        14
    Sh4wnny  
    OP
       43 天前
    @MacsedProtoss 感谢!刚刚去查看了 Surge 关于 DNS 的描述:“By default, the DNS resolve always happens on the remote proxy server since Surge always sends proxy requests with domains.” 应该就和您之前说的一样不需要特意更改。
    因为在传统工科行业网络相关的问题基本很难接触,计算机相关知识也是碰上了问题才去学习,感谢解答
    rebounce
        15
    rebounce  
       43 天前
    不要升级,用 Monterey 这种 LTS 版本。
    cohen121
        16
    cohen121  
       43 天前
    这里的系统代理可以简单理解为就是一个配置项,程序可以选择读取这个配置+自己内部实现的代理协议走代理。 所以这个系统代理和 让系统流量都走代理是没有任何关系的。
    Volekingsg
        17
    Volekingsg  
       42 天前
    Safari 应该是会遵循系统配置的 System Proxy ,因此建议检查有限网络 DNS 是否设置?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   886 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 21:07 · PVG 05:07 · LAX 14:07 · JFK 17:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.