OpenSnitch

Eric讨论 | 贡献2026年4月30日 (四) 02:46的版本 (创建页面,内容为“OpenSnitch 是 Linux 上一款的交互式应用防火墙,灵感来自 macOS 上的 Little Snitch。它最特别的地方在于能监控并拦截应用程序发起的对外网络连接, == 简介 == === 核心组件 === OpenSnitch 主要由两个核心部分组成,理解这两部分有助于后续的操作: * '''守护进程 (opensnitchd)''':这是运行在后台的核心服务,负责实际拦截网络连接并根据规则进行匹配。需要将…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

OpenSnitch 是 Linux 上一款的交互式应用防火墙,灵感来自 macOS 上的 Little Snitch。它最特别的地方在于能监控并拦截应用程序发起的对外网络连接,

简介

核心组件

OpenSnitch 主要由两个核心部分组成,理解这两部分有助于后续的操作:

  • 守护进程 (opensnitchd):这是运行在后台的核心服务,负责实际拦截网络连接并根据规则进行匹配。需要将其设置为系统服务,以实现开机自启。
  • 用户界面 (opensnitch-ui):这是一个图形界面程序,用于显示网络请求弹窗、管理防火墙规则以及查看网络统计信息。它会在系统托盘区显示图标。

当某个尚未配置规则的进程尝试建立网络连接时,守护进程会拦截该连接,并向用户弹出一个对话框询问如何处理(允许或拒绝)。用户做出的选择会被保存为一条新规则,此后同一进程再次尝试连接时,规则将自动生效。

安装

Debian / Ubuntu 及衍生版

Ubuntu 23.04 及以上,直接使用apt安装。

sudo apt install opensnitch

Ubuntu 22.04 及更低版本:从 GitHub Releases 下载 .deb 软件包。访问 OpenSnitch 的 GitHub Releases 页面,下载最新版本。

安装完成后,启动并启用守护进程服务:

 sudo systemctl enable --now opensnitch

其他发行版

  • Fedora / RHEL 系:在 Releases 页面 下载 .rpm 软件包,并使用 sudo dnf installsudo rpm -ivh 命令进行安装。
  • Arch Linux:可通过 AUR 安装,例如使用 yay -S opensnitch 命令。
  • NixOS:在 configuration.nix 配置文件中添加 services.opensnitch.enable = true; 并重建系统。

基本使用方法

首次启动与初始设置

  1. 在应用菜单中找到并启动 “OpenSnitch UI”。程序窗口可能不会直接打开,但会在系统托盘区域出现一个图标。
  2. 右键点击系统托盘图标,选择 “Open main window”(打开主窗口)。
  3. 官方建议的策略是:在新系统上,先将默认动作设为“允许”,让 OpenSnitch 运行几天以学习正常的网络行为并记录规则。之后再切换至更严格的模式,手动审查并调整规则。

处理弹窗与创建规则

这是 OpenSnitch 最核心的交互方式。当某个尚未配置规则的应用发起网络连接时,会弹出如下的配置对话框:

  • 动作 (Action):选择 Allow(允许)或 Deny(拒绝)。
  • 持续时间 (Duration)
** Until restart:仅对本次会话有效,重启后失效。
** For a session:在用户登出之前有效。
** Always:创建永久规则,这是最常用的选项。
  • 范围 (Scope):可以选择此规则仅应用于当前应用程序、该应用程序及其所有子进程,或是全局生效。

使用主窗口管理规则

主窗口是管理防火墙规则的控制中心。

  • Events(事件)标签页:实时显示所有被拦截或允许的连接历史记录,可以清晰地查看哪个应用连接到了哪个 IP 地址和端口。
  • Applications(应用)标签页:列出所有已配置规则的应用程序。在此可以双击某条规则进行修改,或点击左上角的 “+” 按钮手动添加新规则。
  • Hosts(主机)标签页:按域名或 IP 地址聚合统计连接情况。

手动创建规则示例

假设需要永久阻止对 www.example.org 的所有访问,可以按以下步骤操作:

  1. 在主窗口点击 “+” 按钮。
  2. 为规则命名,例如 Block Example
  3. Action 设置为 DenyDuration 设置为 Always
  4. 切换到 Network 标签页,在 “To this host” 字段中输入 www.example.org
  5. 点击 Save 保存规则。

高级配置与技巧

配置文件位置

  • 守护进程规则存储路径/etc/opensnitchd/rules/
  • 守护进程配置文件/etc/opensnitchd/default-config.json
  • 系统防火墙规则(用于绕过 OpenSnitch)/etc/opensnitchd/system-fw.json

可以通过编辑上述 .json 文件来批量导入或备份规则。例如,一条允许 tor 进程的规则示例如下:

{
  "tor": {
    "name": "tor",
    "enabled": true,
    "action": "allow",
    "duration": "always",
    "operator": {
      "type": "simple",
      "sensitive": false,
      "operand": "process.path",
      "data": "/nix/store/.../bin/tor"
    }
  }
}

进程监控方式

OpenSnitch 支持三种监控进程发起连接的方式,可以在配置文件中进行调整:

  • ebpf(推荐):性能最佳,功能最强,能够拦截由内核发起的连接。需要 Linux 内核版本 5.5 或更高。
  • audit:利用 Linux 审计子系统,性能较好。
  • proc:通过读取 /proc 文件系统获取信息,作为备选方案。

避免干扰(VPN 或信任服务)

如果希望某些流量完全不被 OpenSnitch 处理(例如 VPN 的守护进程),可以将其加入“系统防火墙规则”中。编辑 /etc/opensnitchd/system-fw.json 文件,添加相应的 iptables 或 nftables 规则。这样做可以提升性能并避免潜在的配置冲突。

故障排除

没有弹窗,应用直接被阻止?

  • 这可能是因为之前创建了静默规则但已忘记。请检查组件中的规则列表。
  • 也可以尝试在图形界面的 Preferences -> Nodes 选项中,启用 “Debug invalid connections” 功能。这能让未匹配到规则的连接也弹出提示,便于调试。

如何调试启动问题?

  1. 先停止后台服务:sudo systemctl stop opensnitch
  2. 在前台手动启动守护进程并开启调试输出,以便查看具体错误信息:sudo /usr/bin/opensnitchd -debug
  3. 如果图形界面崩溃,可以在终端中直接输入 opensnitch-ui 命令,并观察输出的错误信息。

图形界面显示异常(如出现黑块)?

如果在使用 Wayland 显示服务器或某些窗口管理器时遇到界面渲染问题,可以尝试在启动图形界面之前设置以下环境变量:

export QT_QPA_PLATFORM=xcb
opensnitch-ui