什么是 UFW?你可能认为这是一个简单的问题,但我读的资料越多,就越不清楚。
这个缩写的意思是 Uncomplicated FireWall,好像 ufw 实际上本身就实现了防火墙。事实上,在很多地方,它都被称为防火墙本身,例如本文。
UFW 上的 Ubuntu 帮助 Wiki 页面UFW 是 iptables 的配置工具。(反过来,防火墙的帮助 Wiki 页面说 iptables 是防火墙规则的数据库,也是实际的防火墙,好像数据库就是防火墙一样,这显然是错误的。当然 'iptables' 也是一个程序的名称。)
如果 ufw 是一个配置工具,那么我们可能希望它是一个你运行来配置某些东西的程序,一旦完成,你就会在配置完成后退出。这就是这个问题的可接受答案的立场:简单防火墙(ufw)是一项服务吗?
但其他关于这个问题的答案却不同意——不,它是一种服务。事实上,在我的 18.04 机器上,我看到 ufw 正在作为服务运行!配置工具为什么要作为服务运行?!
此外,systemctl list-units --all --type=service
显示ufw.service
是loaded and active
(并且也是exited
?!)但ufw status
显示inactive
。
那么 ufw status = inactive 是什么意思?
“防火墙”(不管它是什么)处于非活动状态?这就是ufw 手册页'状态' 文档会建议。
或者这是否意味着在 ufw 中配置的规则处于非活动状态(但在 iptables 中配置的其他规则处于活动状态)?
或者这是否意味着 ufw 在启动时启动,将其规则放入 ipconfig(或无论它们去哪里)以便它们现在生效,而现在 ufw 无需执行任何操作因此它处于非活动状态?
特别感兴趣的是:我想遵循一些需要发出一些 iptables 命令的指令,但担心它们会与 ufw 设备冲突或被 ufw 设备覆盖。
答案1
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