justinrdonnelly/bouncer
GitHub: justinrdonnelly/bouncer
Bouncer 是一款 Linux 桌面应用,在用户连接新 Wi-Fi 时提示选择防火墙区域,弥补 NetworkManager 防火墙区域切换功能不易发现的缺陷。
Stars: 34 | Forks: 9
# Bouncer
Bouncer 是一款帮助你为无线连接选择正确防火墙区域的应用程序。当你连接到一个新的 Wi-Fi 网络时,Bouncer 会打开一个窗口,提示你选择这是什么类型的网络(例如,家庭、公共、工作)。当你选择网络类型后,该设置就会与此网络关联,并在未来自动应用。
需要安装 [NetworkManager](https://networkmanager.dev/) 和 [firewalld](https://firewalld.org/)。如果你没有使用它们,则无法使用 Bouncer。Fedora 默认使用这两者。其他发行版可能并非如此。
安装后需要进行额外的设置。请参阅适用于你所使用发行版的章节。

## 安装
[](https://flathub.org/apps/io.github.justinrdonnelly.bouncer)
## 设置
与大多数 Flatpak 应用程序不同,Bouncer 需要在你登录时启动。因此,需要配置开机自启。Bouncer 可以自动为你完成此操作,只需在首次使用时手动启动它即可。之后,它会在你登录时自动启动。必须为系统上的每个用户执行此操作。
如果你想全局启用开机自启(即针对所有用户),则必须手动完成。将 `.desktop` 文件复制到系统级的 `autostart` 目录中。(例如 `sudo cp /var/lib/flatpak/exports/share/applications/io.github.justinrdonnelly.bouncer.desktop /etc/xdg/autostart/`)。
由于 Bouncer 需要 NetworkManager 和 firewalld,并且更改防火墙区域有时需要 root 权限(取决于 polkit 配置),因此可能需要进行额外的设置。下表列出了各发行版的相关信息。
| 发行版 | 默认使用
NetworkManager | 默认使用
firewalld | 默认情况下管理员
用户通过 polkit | 默认情况下普通
用户通过 polkit | | ------------ | ----------------------------- | ------------------------ | -------------------------------------------- | ---------------------------------------------- | | Fedora 41 | ✓ | ✓ | ✓ | ✓ | | Ubuntu 24.10 | ✓ | ✗ | ✓ | ✗ | | Debian 12 | ✓ | ✗ | ✓ | ✓ | ### Fedora 对于 Fedora,一切开箱即用!只需启动 Bouncer 进行确认,然后点击 Monitor 按钮即可开始使用 Bouncer。 ### Ubuntu 1. 卸载 ufw:`sudo apt remove ufw` 2. 安装 firewalld:`sudo apt install firewalld` 3. 默认情况下,polkit 的配置不允许普通用户为连接设置区域。最简单的修改方法是将用户添加到 `netdev` 组中(例如 `usermod -a -G netdev justin`)。或者,你也可以为 `org.freedesktop.NetworkManager.settings.modify.system` 操作创建自定义的 polkit 规则(如何创建自定义 polkit 规则超出了本文档的讨论范围,留作给读者的练习)。 4. 启动 Bouncer 并确认你的系统配置正确。然后点击 Monitor 按钮即可开始使用 Bouncer。 ### Debian 1. 安装 firewalld:`sudo apt install firewalld` 2. 默认情况下,polkit 的配置不允许普通用户为连接设置区域。最简单的修改方法是将用户添加到 `netdev` 组中(例如 `usermod -a -G netdev justin`)。或者,你也可以为 `org.freedesktop.NetworkManager.settings.modify.system` 操作创建自定义的 polkit 规则(如何创建自定义 polkit 规则超出了本文档的讨论范围,留作给读者的练习)。 3. 启动 Bouncer 并确认你的系统配置正确。然后点击 Monitor 按钮即可开始使用 Bouncer。 ## 工作原理 你知道吗?NetworkManager 具有一项可以根据连接自动更改防火墙区域的功能。这允许你执行一些操作,例如在使用咖啡店的 Wi-Fi 时阻止传入的 ssh 连接。遗憾的是,这项功能很大程度上未被大家发现。Bouncer 将 GUI 易于发现的特性带到了你最需要它的时候——也就是当你首次连接到新的 Wi-Fi 网络时。 Bouncer 使用 [D-Bus](https://www.freedesktop.org/wiki/Software/dbus/) 与 NetworkManager 和 firewalld 进行集成。概括来说,它执行以下操作: 1. 监听来自 NetworkManager 的 D-Bus 信号,检测 Wi-Fi 设备是否已切换到新连接。 2. 如果该连接之前已经出现过并完成了配置,则不会发生任何事情。如果未配置,我们将继续下一步。 3. 使用 D-Bus 向 firewalld 请求区域列表。将这个通常很庞大的列表精简为几个基础选项。 4. 打开一个窗口解释正在发生的事情,允许用户为该网络选择一个防火墙区域。 5. 如果用户点击 Exit 或关闭窗口,则不会进行任何更改。如果用户选择了一个区域,我们将继续下一步。 6. 使用 D-Bus 在 NetworkManager 中设置连接区域。NetworkManager 会在后续连接到该网络时,自动将防火墙区域更改为此值。 ## 许可证 Bouncer 根据 Mozilla Public License 2.0 版的条款进行分发。
NetworkManager | 默认使用
firewalld | 默认情况下管理员
用户通过 polkit | 默认情况下普通
用户通过 polkit | | ------------ | ----------------------------- | ------------------------ | -------------------------------------------- | ---------------------------------------------- | | Fedora 41 | ✓ | ✓ | ✓ | ✓ | | Ubuntu 24.10 | ✓ | ✗ | ✓ | ✗ | | Debian 12 | ✓ | ✗ | ✓ | ✓ | ### Fedora 对于 Fedora,一切开箱即用!只需启动 Bouncer 进行确认,然后点击 Monitor 按钮即可开始使用 Bouncer。 ### Ubuntu 1. 卸载 ufw:`sudo apt remove ufw` 2. 安装 firewalld:`sudo apt install firewalld` 3. 默认情况下,polkit 的配置不允许普通用户为连接设置区域。最简单的修改方法是将用户添加到 `netdev` 组中(例如 `usermod -a -G netdev justin`)。或者,你也可以为 `org.freedesktop.NetworkManager.settings.modify.system` 操作创建自定义的 polkit 规则(如何创建自定义 polkit 规则超出了本文档的讨论范围,留作给读者的练习)。 4. 启动 Bouncer 并确认你的系统配置正确。然后点击 Monitor 按钮即可开始使用 Bouncer。 ### Debian 1. 安装 firewalld:`sudo apt install firewalld` 2. 默认情况下,polkit 的配置不允许普通用户为连接设置区域。最简单的修改方法是将用户添加到 `netdev` 组中(例如 `usermod -a -G netdev justin`)。或者,你也可以为 `org.freedesktop.NetworkManager.settings.modify.system` 操作创建自定义的 polkit 规则(如何创建自定义 polkit 规则超出了本文档的讨论范围,留作给读者的练习)。 3. 启动 Bouncer 并确认你的系统配置正确。然后点击 Monitor 按钮即可开始使用 Bouncer。 ## 工作原理 你知道吗?NetworkManager 具有一项可以根据连接自动更改防火墙区域的功能。这允许你执行一些操作,例如在使用咖啡店的 Wi-Fi 时阻止传入的 ssh 连接。遗憾的是,这项功能很大程度上未被大家发现。Bouncer 将 GUI 易于发现的特性带到了你最需要它的时候——也就是当你首次连接到新的 Wi-Fi 网络时。 Bouncer 使用 [D-Bus](https://www.freedesktop.org/wiki/Software/dbus/) 与 NetworkManager 和 firewalld 进行集成。概括来说,它执行以下操作: 1. 监听来自 NetworkManager 的 D-Bus 信号,检测 Wi-Fi 设备是否已切换到新连接。 2. 如果该连接之前已经出现过并完成了配置,则不会发生任何事情。如果未配置,我们将继续下一步。 3. 使用 D-Bus 向 firewalld 请求区域列表。将这个通常很庞大的列表精简为几个基础选项。 4. 打开一个窗口解释正在发生的事情,允许用户为该网络选择一个防火墙区域。 5. 如果用户点击 Exit 或关闭窗口,则不会进行任何更改。如果用户选择了一个区域,我们将继续下一步。 6. 使用 D-Bus 在 NetworkManager 中设置连接区域。NetworkManager 会在后续连接到该网络时,自动将防火墙区域更改为此值。 ## 许可证 Bouncer 根据 Mozilla Public License 2.0 版的条款进行分发。
标签:firewalld, Flatpak, NetworkManager, 桌面工具, 自定义脚本, 逆向工具, 防火墙