UFW:究竟是什么?

gwi*_*man 14 iptables firewall ufw

什么是UFW?你会认为这是一个简单的问题,但我阅读的资源越多,它就越不清晰。

首字母缩写词拼写为 Uncomplicated FireWall,就好像 ufw 实际上实现了防火墙本身。事实上,在许多地方,它本身被称为防火墙,例如在本文中

UFW 上的 Ubuntu 帮助 wiki 页面说 UFW 是 iptables 的配置工具。(反过来,防火墙上的帮助维基页面说iptables是防火墙规则的数据库,它也是实际的防火墙,好像数据库是防火墙,这显然是错误的。当然'iptables'也是程序的名称。)

如果 ufw 是一个配置工具,那么我们可能希望它是一个你运行来配置某些东西的程序,一旦完成,你就退出了,配置已经建立。这就是这个问题的公认答案的立场:是简单的防火墙 (ufw) 服务吗?

但是关于这个问题的其他答案不同意——不,这是一项服务。事实上,在我的 18.04 机器上,我看到 ufw 作为服务运行!为什么配置工具作为服务运行?!

此外,systemctl list-units --all --type=serviceshows ufw.serviceis loaded and active(and also exited?!) yet ufw statusshows inactive

那么 ufw status = inactive 是什么意思呢?

  1. “防火墙”(无论是什么)是不活动的?这就是“状态”的 ufw 手册页文档所建议的。

  2. 还是说ufw中配置的规则是非活动的(而iptables中配置的其他规则是活动的)?

  3. 或者这是否意味着 ufw 在启动时开始,将其规则设置到 ipconfig(或它们去的任何地方),以便它们现在生效,而现在 ufw 没有任何关系,因此它处于非活动状态?

特别感兴趣:我想遵循一些需要发出一些 iptables 命令的说明,但担心它们会与 ufw 设备冲突或被 ufw 设备覆盖。

tho*_*ter 23

ufw 是 netfilter/iptables 的前端,这是用于路由和过滤互联网流量的 Linux 机制。

ufw 是完全可选的,可以直接使用 iptables 命令创建防火墙和路由表。有些人更喜欢 ufw 的语法,这应该让它更容易一些。

ufw 本身不是防火墙,它是一个设置 netfilter/iptables 配置的工具。它被注册为服务,因为它需要在您的机器每次启动时运行。我不相信它在完成此配置后会一直驻留在内存中。“重新启动”服务只是重新运行它的脚本。Linux 发行版中的东西被注册为服务并不罕见,即使它们只是在启动或关闭时运行的脚本,而不会驻留在两者之间。

如果您使用 ufw,则无法使用自己的脚本设置自己的 iptables 规则,因为当 ufw 设置自己的脚本时,这些规则将被覆盖。这也意味着 ufw 可能会与其他设置防火墙规则的工具发生冲突。

如果sudo ufw status返回“inactive”,则表示 ufw 已被禁用(例如,不会在启动时重新应用任何规则)。您需要确保 ufw 已启用sudo ufw enable,但您还需要为此配置规则以使其有意义。如果您确定已启用 ufw 但它返回“inactive”,则可能存在其他问题。

请注意,“启动”服务不会启用 ufw,它只会激活启动脚本。如果在启动脚本运行时禁用了 ufw,它将不会执行任何操作。

您可以直接使用 iptables 判断您的防火墙规则是否已在任何给定时间应用:

sudo iptables -L
sudo ip6tables -L
Run Code Online (Sandbox Code Playgroud)

  • 注意:我个人不使用 ufw,我使用一个名为 netfilter-persistent 的包,它允许您将本机 iptables 规则写入文件并在启动时重新应用它们。在启动时,它基本上做 ufw 所做的:运行一个应用配置的启动脚本。不同之处在于它不是从它自己的简化语法进行翻译,它只是将 iptables 命令直接发送到 iptables。 (2认同)