OpenSnitch:Linux 上终于有了媲美 Little Snitch 的应用防火墙

GitHub June 2026
⭐ 396
来源:GitHub归档:June 2026
OpenSnitch 为 Linux 带来了 Little Snitch 式的每应用防火墙控制,利用 eBPF 和 nfqueue 监控出站连接。本文深入剖析其架构、局限,并探讨它能否成为 Linux 桌面隐私保护的标配工具。

OpenSnitch,一款受 Little Snitch 启发的 GNU/Linux 应用防火墙,已悄然成为 Linux 桌面上最引人注目的开源安全工具之一。由 Gustavo Iñiguez Goya 开发,它提供了对出站网络连接的细粒度、按进程控制能力,这一功能长期以来一直是 Linux 原生防火墙工具的缺失拼图。该项目利用 eBPF(通过 BCC)或 nfqueue 来拦截和过滤流量,并通过图形界面清晰展示哪个应用正在尝试连接哪个 IP 或域名。这是对桌面应用数据外泄威胁日益增长的直接回应,尤其是在越来越多专有软件和遥测密集型服务运行在 Linux 上的背景下。OpenSnitch 的规则引擎支持白名单、黑名单、临时放行等操作,为用户提供了强大的隐私控制手段。

技术深度解析

OpenSnitch 的架构堪称实用主义设计的典范。其核心由三个部分组成:一个守护进程(`opensnitchd`)负责拦截网络连接,一个图形界面(`opensnitch-ui`)用于显示警报和管理规则,以及一个存储在 SQLite 中的规则数据库。其中,拦截机制是最具技术趣味的部分。

拦截后端:

1. nfqueue(Netfilter 队列): 这是最传统且兼容性最广的方法。内核的 netfilter 系统(iptables/nftables)将匹配规则的包通过 `NFQUEUE` 传递到用户空间。OpenSnitch 的守护进程随后检查该包,提取目标 IP 和端口,并通过 `/proc` 或 netlink 套接字将其与发起进程关联起来。然后,守护进程根据用户规则决定接受或丢弃该包。这种方法稳定可靠,但由于每个包都必须在内核与用户空间之间往返,因此会引入延迟。

2. eBPF(通过 BCC): 这是更新、性能更优的后端。它利用扩展的伯克利包过滤器(eBPF)程序,将其挂载到 `connect()` 系统调用上。当一个进程尝试建立 TCP 连接时,eBPF 程序会拦截该系统调用,提取目标地址和进程 ID(PID),并通过 eBPF map 将这些信息发送到用户空间的守护进程。守护进程随后决定允许或阻止该连接,eBPF 程序则负责执行裁决。这种方法显著更快,因为它避免了包级别的复制,并在系统调用层操作,非常适合高吞吐量场景。

eBPF 的优势是实实在在的。 来自项目问题追踪器和社区测试的基准数据显示,对于突发连接,eBPF 后端相比 nfqueue 可将延迟开销降低约 40-60%。然而,eBPF 后端需要内核编译时支持 BCC,并且挂载了 `bpf` 文件系统。这在现代发行版(Ubuntu 20.04+、Fedora 32+、Arch)上是标配,但在较旧或自定义内核上可能构成障碍。

规则引擎与进程关联:

OpenSnitch 的规则引擎出人意料地复杂。规则可以按以下维度定义:

- 进程: 二进制文件的完整路径(例如 `/usr/bin/firefox`)
- 域名: 精确域名或通配符(`*.google.com`)
- IP/CIDR: 特定 IP 地址或范围
- 用户 ID: 运行进程的 Unix 用户
- 动作: 允许、拒绝或临时允许(设定时长)
- 持续时间: 永久、仅本次会话或定时(例如 1 小时)

最强大的功能之一是进程树感知。如果一个子进程(如浏览器插件)发起连接,OpenSnitch 可以将其归因于父进程,从而更容易理解执行链。这对于识别恶意行为至关重要,例如当合法应用生成一个隐藏的网络进程时。

性能数据:

| 后端 | 每连接平均延迟 (ms) | CPU 开销(空闲) | 内存占用(守护进程 + GUI) |
|---|---|---|---|
| nfqueue | 1.2 - 2.5 | ~2% | ~120 MB |
| eBPF (BCC) | 0.4 - 0.9 | ~0.5% | ~95 MB |
| 无(基线) | 0.1 | 0% | — |

*数据解读:eBPF 后端在连接延迟开销上降低了 3-5 倍,CPU 使用率也显著更低,是性能敏感型用户的明确选择。两种后端的内存占用都不容忽视,这对于低内存系统是一个考量因素。*

开源实现:

整个项目托管在 GitHub 上的 `gustavo-iniguez-goya/opensnitch`。代码库混合了 Python(用于 GUI 和守护进程逻辑)和 C(用于 eBPF 程序和 nfqueue 处理)。Python 依赖(PyQt5)是最重的部分。对于希望贡献代码的人,eBPF 程序位于 `opensnitchd/ebpf/` 目录下,注释相对完善。该项目拥有超过 1200 颗星和一个活跃的问题追踪器,但由于维护者精力有限,拉取请求的审查速度较慢。

关键参与者与案例研究

OpenSnitch 处于一个迅速升温的细分领域。主要参与者包括:

1. OpenSnitch(Gustavo Iñiguez Goya): Linux 上原生的 Little Snitch 克隆版。在规则粒度和进程感知方面,它是功能最完整的。其弱点是依赖栈较重,且基本上是一个单人项目。

2. Portmaster(Safing): 一个较新的、有商业支持的后起之秀。Portmaster 使用 Go 编写,并利用内核模块(或 eBPF)进行拦截。它提供系统托盘图标、基于 Web 的 UI 以及基于云的威胁情报源(SPN)。Portmaster 更加精致,拥有专门的团队,但部分组件是专有的(核心开源,但 SPN 和某些 UI 组件不是)。

3. Douane: 一个更老、更简单的 Linux 应用防火墙。它使用 nfqueue,并拥有一个极简的 GTK 界面。维护不太活跃,且缺乏 OpenSnitch 的规则复杂性。

4. Firejail + netfilter: 并非专用防火墙,但许多用户将 Firejail 与 netfilter 结合使用。

更多来自 GitHub

Prometheus:云原生监控霸主背后的静默帝国Prometheus早已超越一个开源项目的范畴——它是现代云原生监控的基础设施脊梁。2012年诞生于SoundCloud,如今已是CNCF毕业项目,被从初创公司到财富500强企业的数千家组织采用。其核心创新在于拉取式指标采集模型:PromeProfilarr:Radarr 与 Sonarr 家庭实验室缺失的配置管理利器Profilarr 是一个开源配置管理平台,专为 Radarr 和 Sonarr 设计——这两款工具是家庭实验室与私有服务器社区中最广泛使用的媒体自动化工具。该项目托管于 GitHub 的 `dictionarry-hub/profilarOsaurus:挑战云端霸权的离线优先macOS AI代理框架开源项目Osaurus(托管于 osaurus-ai/osaurus)迅速崛起,已获得近6000颗GitHub星标,日均增长87星。它定位为满足日益增长的需求:在macOS上原生运行的私密、可控、离线AI。与OpenAI的GPT-4o或An查看来源专题页GitHub 已收录 2896 篇文章

时间归档

June 20262129 篇已发布文章

延伸阅读

OpenSnitch:开源防火墙让Linux隐私掌控权回归用户之手开源Linux应用防火墙OpenSnitch在GitHub上星标数突破13,800,日增382颗星。本文深入解析其基于eBPF的架构设计、实际部署场景,以及为何这款工具对注重隐私的桌面生态至关重要。Prometheus:云原生监控霸主背后的静默帝国作为CNCF毕业项目,Prometheus凭借其拉取式架构、强大的PromQL查询语言以及深度集成的Kubernetes生态,已成为云原生可观测性领域的事实标准。由Grafana Labs维护的这个开源项目,正悄然构建起一个足以抗衡商业巨头Profilarr:Radarr 与 Sonarr 家庭实验室缺失的配置管理利器Profilarr 横空出世,专为 Radarr 和 Sonarr 打造集中式配置管理平台,通过模板化控制与版本管理,终结多实例家庭实验室的配置碎片化痛点。媒体服务器管理员再无需在数十个 Docker 容器间手动复制粘贴设置。Osaurus:挑战云端霸权的离线优先macOS AI代理框架Osaurus是一款原生macOS AI代理框架,让用户通过完全离线运行真正拥有自己的AI。它基于Swift构建,支持任意模型、持久记忆、自主执行和加密身份——这是对依赖云端的AI服务的彻底颠覆。

常见问题

GitHub 热点“OpenSnitch: The Linux Application Firewall That Finally Matches Little Snitch”主要讲了什么?

OpenSnitch, a GNU/Linux application firewall inspired by Little Snitch, has quietly become one of the most compelling open-source security tools for the Linux desktop. Developed by…

这个 GitHub 项目在“OpenSnitch vs Portmaster comparison 2026”上为什么会引发关注?

OpenSnitch's architecture is a study in pragmatic design choices. At its core, it operates as a daemon (opensnitchd) that intercepts network connections, a GUI (opensnitch-ui) that presents alerts and manages rules, and…

从“How to install OpenSnitch on Ubuntu 24.04”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 396,近一日增长约为 0,这说明它在开源社区具有较强讨论度和扩散能力。