为什么 macOS 防火墙无法阻止 App 对外连接
macOS 内置了防火墙,位于“系统设置”→“网络”→“防火墙”,值得一直开启。但它管的是传入连接:决定哪些 App 可以接受来自其他电脑的连接。它没有针对外发连接的设置,因此无法阻止 Mac 上的某个 App 连接互联网上的服务器。
大多数疑问都出在外发流量上。哪些 App 会在后台“回家”?免费小工具把数据发到了哪里?能否有意让某个 App 离线使用,或者不让旧版本一直催你更新?这就需要一个外发防火墙,Tidy My Mac 的 Firewall 正是如此。
查看哪些 App 正在连接互联网
打开 Firewall,随着 App 发起外发连接,Recent Connections 标签页会逐渐填充内容。每一行对应一个 App,显示其图标和名称,下方是它连接过的远程地址和端口,最近的排在最前。将鼠标悬停在这一行上即可查看全部。
- 当前有连接处于打开状态的 App 会显示连接数,例如 3 open。已经安静下来的 App 则显示上次出现的时间。
- 属于 macOS 的 App 会标记为 macOS,方便你与自己安装的 App 区分开。
- 连接按 App 而不是按进程分组。浏览器等 App 的大部分网络活动都在其包内的辅助进程中完成,这些进程会列在所属 App 之下。
- App 包之外的工具,例如
curl或 Homebrew 命令,则以各自的名称列出。
该列表只在 Firewall 界面打开时收集,每隔几秒检查一次,并显示在你自己的账户下运行的 App。它不会在后台运行,所以不看的时候不占用任何资源。查看列表无需开启防火墙。
一键阻止 App 访问互联网
在 Recent Connections 中点击任意 App 上的 Block,或选中多个后点击 Block Selected。若要阻止尚未连接过的 App,请打开 Blocked Apps,点击 Add App…,然后从“应用程序”中选取。
被阻止的 App 无法再发起新的外发连接。阻止对整个 App 生效,包括其辅助进程:阻止某个浏览器,就会阻止其包内的所有进程。在你阻止之前已经打开的连接会保持到它们关闭为止;退出并重新打开该 App 即可一次性切断所有连接。
Blocked Apps 标签页列出你阻止过的每个 App 及阻止时间。点击 Unblock,该 App 会在下次连接时恢复联网。无论名单里有什么,Tidy My Mac 都不会阻止它自己。
工作原理
Firewall 是一个网络内容过滤器,也是基于 Apple 的 Network Extension 框架构建的系统扩展。macOS 会把每个新的外发连接交给它,扩展查明是哪个 App 发起的,如果该 App 在你的阻止名单上,就丢弃这个连接。它从不查看连接所承载的内容。传入连接则交给 macOS 防火墙处理。
| 步骤 | 发生的事情 |
|---|---|
| Turn On | macOS 会请你在“系统设置”→“通用”→“登录项与扩展”→“网络扩展”中允许 Tidy My Mac 的扩展,然后请求允许它过滤网络内容。阻止第一个 App 时,防火墙会自动为你开启。 |
| Block / Unblock | 新的名单会立即送达扩展,不会再有任何提示,并从下一个连接起生效。 |
| Turn Off | 过滤停止,但你的阻止名单会保留。在你再次开启之前,名单上的 App 会显示 Not enforced。 |
macOS 只会运行位于“应用程序”文件夹中的 App 所带的系统扩展,所以 Tidy My Mac 必须放在那里,防火墙才能启动。
须知
- App 是按其在磁盘上的位置来匹配的。如果你移动或重命名了被阻止的 App,它就不再被阻止;请从新位置重新添加。
- 有些 App 会把下载任务交给 macOS 的后台服务,而不是自己发起连接。这部分流量属于 macOS 服务而不是该 App,所以阻止 App 并不能阻止它。
- Firewall 按 App 判断,而不是按网站。若要对所有 App 阻止特定网站,请使用 Web Protection。
连接列表和你的阻止名单都保留在你的 Mac 上。Firewall 不会向我们发送任何内容:隐私政策列出了 App 发出的每一个请求,而 Firewall 一个也没有。
关于Firewall的常见问题
没有内置的。macOS 防火墙控制哪些 App 可以接受传入连接,没有针对外发连接的选项。Tidy My Mac 增加了外发防火墙,可以阻止你选择的 App。也请同时开启 macOS 防火墙;Security Settings 页面会检查它是否已开启。
有效。阻止由网络扩展完成,macOS 会让它独立运行,因此被阻止的 App 在 App 关闭后和重启后依然保持被阻止。只有最近连接列表需要打开 Firewall 界面。
不会。没有任何弹窗。除非你阻止,否则所有 App 都被允许,新的 App 只会出现在 Recent Connections 中,你可以按需阻止它们。
Firewall 显示的是每个 App 连接的 IP 地址和端口(按 macOS 报告的内容),而不是网站名称。若要按名称查看并阻止网站(对所有 App 生效),请使用 Web Protection。
不会。它只根据发起连接的 App 来判断每个连接,不查看发送的内容,有关你连接的任何信息都不会离开你的 Mac。