免费开源的 LuLu macOS 防火墙:从克隆编译到放行规则实战上手
【免费下载链接】LuLuLuLu is the free open-source macOS firewall项目地址: https://gitcode.com/gh_mirrors/lu/LuLu
LuLu 是一款免费开源的 macOS 防火墙,基于系统原生 Network Extension 运行。它监控每个应用的出网请求,让你逐条决定放行或阻止,并把决定记成规则。这篇实战带你从零克隆编译、完成系统授权,再到日常的放行、阻止与规则管理,帮你看清并管住数据外发。
LuLu 是什么:一个开源自带的 macOS 应用防火墙
LuLu 管的是"应用往外连"这件事,属于出站防火墙。
- 定位:免费、开源、基于 macOS 原生网络扩展,装好即接管出网监控。
- 适用人群:想看清哪些程序在偷偷联网、担心数据被带走的普通用户和开发机。
- 与同类差异:多数同类是付费应用,LuLu 完全开源可审计;它的规则认代码签名,升级程序后仍按签名匹配,而不是死盯路径。
它处理"第一条连接请求"的链路是这样的:
第一次遇到没规则的请求,它弹窗问你;你答一次,它就把这条决定存下来,之后同样的请求不再打扰。
克隆编译并最快完成首次授权
先确认环境,下面每条都满足再动手:
- macOS 10.15(Catalina)及以上版本
- 一个可登录的系统管理员账号
- 已安装 Xcode(用于编译)
- 约 100MB 可用磁盘空间
打开"终端",克隆仓库并用 Xcode 打开工程:
# 克隆 LuLu 仓库 git clone https://gitcode.com/gh_mirrors/lu/LuLu cd LuLu # 用 Xcode 打开工作区并选择 LuLu 方案运行 open lulu.xcworkspace在 Xcode 里选LuLu方案,点运行,把产物拖进"应用程序"。首次运行会走一遍授权,按下面顺序点:
- 点"允许"进入下一步,系统弹出过滤网络内容的提示,点Permitir / 允许。
- 系统再问隐私与安全授权,用Touch ID或输入密码确认。
- 若弹出"系统扩展被阻止",点打开系统设置。
- 在系统设置 → 通用 → 登录项与扩展 → 网络扩展中,打开LuLu的开关(旧版本在"隐私与安全性"里点允许)。
- 回到欢迎窗口,按需勾选放行所有 Apple 程序、放行已安装应用、放行 DNS 流量,完成。
完成后菜单栏出现盾牌图标,说明防火墙已生效。
日常三个高频场景:放行、阻止与规则管理
菜单栏盾牌图标是日常入口。
场景一:放行一个常用应用。
- 场景:浏览器首次联网被拦,你想长期放行。
- 操作:弹出窗口点允许,把规则范围选进程、时长选始终。
- 预期:该应用之后的出网不再弹窗。
场景二:临时验证一个可疑程序。
- 场景:装了新工具,想先看它连哪里。
- 操作:弹出窗口点允许,时长选仅一次或本进程,或干脆点阻止。
- 预期:连接被临时放行一次,或直接被拒;程序退出后临时规则失效。
场景三:回看并改动已有规则。
- 操作:点菜单栏盾牌图标,选Rules…打开规则窗口,可搜索、启用/停用、删除某条规则。
- 预期:改动即时生效,列表实时更新。
规则"范围"决定这条规则管得多宽,按需选:
| 规则范围 | 作用 | 什么时候用 |
|---|---|---|
| 进程 | 只管发起请求的这个程序 | 给某个 App 单独授权 |
| 端点 | 只管目标 IP / 域名 | 只放行某个网站或地址 |
| 进程树 | 程序加它的子进程 | 带插件、子进程的应用 |
进阶:导出导入规则与批量配置
规则攒多了,最好能备份、迁移或按环境切换。
一键导入导出:点菜单栏盾牌图标 →Rules→ 选导出,会生成一个rules.json文件(默认存桌面,可勾选"仅导出用户创建的规则");在另一台机器上选导入,选中该文件即可。这样规则跟着文件走,不用重配。日常还能用清理规则,一键删掉指向已删除、已过期或已退出程序的陈旧规则。
批量与自动化:LuLu 提供命令行入口,供脚本安装或卸载(需管理员权限):
# 以 root 安装 / 卸载(需管理员) sudo /Applications/LuLu.app/Contents/MacOS/LuLu -install sudo /Applications/LuLu.app/Contents/MacOS/LuLu -uninstallProfiles(配置档)让你为不同环境各存一套规则和偏好,存在/Library/Objective-See/LuLu/Profiles下,切换时整套生效,适合"工作机/个人机"两副面孔。
几个关键偏好在设置窗口的"模式"页调整,含义如下:
| 配置项 | 含义 |
|---|---|
| passiveMode被动模式 | 不拦截,只记录请求 |
| blockMode阻止模式 | 默认全部阻止,放行需显式 |
| allowApple | 放行所有 Apple 系统程序 |
| allowDNS | 放行 DNS 流量,减少弹窗 |
避坑:查日志与排查连接被拦
现象 → 原因 → 解决,按这条线查最快。
连接被意外拦住:可能是规则冲突或临时规则已过期。先看日志确认拦截来源,再回规则窗口停用冲突项。
扩展没生效、图标灰着:系统扩展未开启。去系统设置 → 通用 → 登录项与扩展 → 网络扩展把 LuLu 打开,必要时点打开系统设置按钮直达。
规则越攒越多、弹窗变慢:临时规则和失效规则堆积。定期跑一次清理规则,把指向已退出或已删程序的规则清掉。
用这两条命令可复制地查日志与复盘:
# 实时查看 LuLu 日志 log stream --predicate 'subsystem == "com.objective-see.lulu"' # 查看最近 30 分钟的日志 log show --predicate 'subsystem == "com.objective-see.lulu"' --last 30m延伸:源码目录、测试与社区
想读源码,重点看这几处(仓库内真实路径):
- 主应用界面层:告警窗口、规则窗口、设置、状态栏菜单。
- 网络扩展过滤层:
FilterDataProvider、Rules等,决定放行/阻止的核心逻辑。 - 共享数据结构:
Rule、常量定义与签名信息。 - 被动模式测试:
run_passive_mode_tests.sh与测试说明,可本地跑一遍验证域名优先等改进。
入口文档在 README.md 与 README_zh-Hans.md。
LuLu 用开源和签名感知的规则,把"谁在往外发数据"这件事交回你手里。下一步,就从克隆编译、完成授权,放行第一个应用开始。
【免费下载链接】LuLuLuLu is the free open-source macOS firewall项目地址: https://gitcode.com/gh_mirrors/lu/LuLu
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考