可通过系统设置图形界面或终端命令两种方式阻止特定应用响应外部网络请求:首先进入“系统设置→网络→防火墙”,启用防火墙并点击“防火墙选项”,添加目标应用(如WeChat.app)后将其设为“阻止传入连接”;或在终端执行sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/WeChat.app --block命令精准阻断,再用--listapps验证生效。

你想让某个特定软件(比如微信、迅雷或自研开发工具)无法被外部网络访问,又不想影响其他程序——这需要绕过防火墙默认策略,为它单独设定“阻止传入连接”规则。
通过系统设置图形界面添加并限制单个应用
这是最直观的方式,适用于 macOS Ventura(13.x)、Sonoma(14.x)及 Sequoia(15.x)用户。注意:入口已从「隐私与安全性」移至「网络」模块,老教程路径会失效。
点击屏幕左上角苹果菜单 → 选择“系统设置” → 在左侧边栏点击“网络” → 向下滚动找到并点击“防火墙”。
若防火墙未开启,先点击“打开防火墙”按钮;此时系统会提示输入管理员密码——【必须输入当前登录账户的管理员密码,仅输一次,不保存】。
点击右下角“防火墙选项…”按钮,进入高级配置窗口。
点击左下角“+”号 → 在访达弹窗中定位目标应用(例如“/Applications/WeChat.app”),**不要选快捷方式或别名,必须选 .app 包本体** → 点击“添加”。
在下方列表中找到刚添加的应用,将其右侧下拉菜单从“允许传入连接”改为“阻止传入连接” → 点击“好”确认。该应用立刻失去响应外部请求的能力,但自身发起的上网行为(如发消息、加载网页)不受影响。
用终端命令精准阻断指定软件的传入连接
适合需要脚本化操作、验证规则是否写入底层或 GUI 失效时使用。此方法直接调用 socketfilterfw 服务,不依赖图形界面状态。
打开“应用程序” → “实用工具” → “终端”。
执行以下命令启用全局防火墙(如尚未开启):
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
输入管理员密码(输入过程无回显)后回车,等待提示符返回。
执行命令添加应用并立即阻止其传入连接:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/WeChat.app && sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setblockall on
⚠️ 注意:第二条命令中的 --setblockall on 是全局开关,会同时屏蔽所有未明确放行的应用。如只想封单个软件,请改用:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setallowsigned off && sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setblockall off && sudo /usr/libexec/ApplicationFirewall/socketfilterfw --enable
最后验证该应用是否已被识别并拦截:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --listapps | grep WeChat
配置防火墙选项中的关键安全开关
回到“防火墙选项…”窗口,有三项设置直接影响单应用规则的实际效果,必须按需调整:
勾选“启用隐身模式”:Mac 将不响应任何 ICMP ping、mDNS 探测或端口扫描请求,让该设备在网络中“不可见”,避免被主动定位到你刚封禁的那个软件所监听的端口。
取消勾选“自动允许已签名的软件接收传入连接”:否则即使你手动添加了微信并设为“阻止”,只要它是 Apple 公证签名的,系统仍可能绕过你的设置放行——【这是普通用户最容易忽略的规则覆盖点】。
不勾选“阻止所有传入连接”:此项是全局开关,一旦启用,AirDrop、文件共享、远程桌面等系统服务全部中断,与“只封单个软件”的目标冲突,保持未勾选即可。


















