如何添加 UFW 无法在 Ubuntu 中创建的 iptables 规则?

如何添加 UFW 无法在 Ubuntu 中创建的 iptables 规则?

UFW 对我来说运行得很好,除了有些情况不起作用...

我希望能够手动添加另一条在启动时应用的规则?

  • 我应该把这条规则放在哪里?
  • 我该如何让它在启动时启动?
  • 我如何才能让它与 UFW 良好配合?

答案1

根据这个 Ubuntu 维基页面iptables(向下滚动到“高级功能”),您可以通过将自己的规则放入以下文件来实现您想要的功能:

  • /etc/ufw/before.rules
  • /etc/ufw/after.rules

在应用before任何规则之前会评估文件;在应用规则之后会评估文件。(对于您的规则,还有相应的规则文件。)ufwafterbefore6after6ip6tables

这些规则文件应采用iptables-restore-兼容语法,大概是因为ufw只需使用 即可加载它们。最后,请注意,对规则文件进行任何更改后,iptables-restore都需要停止并重新启动。ufw

答案2

UFW 将清除任何手动添加规则,/etc/ufw/user.rules其中不是以评论开头:

### tuple ### allow tcp 80 0.0.0.0/0 any 0.0.0.0/0 out
-A ufw-user-output -p tcp --dport 80 -j ACCEPT

当 UFW 在启动时对规则进行健全性检查时,它会期望出现一条附带的注释。如果是不是现在,即使规则的语法正确,UFW 仍会清除它。

不要随意使用评论:它必须是 UFW 通过 cli 创建用户规则时插入的注释,即:

sudo ufw allow http/tcp

因此,如果您想在简单文件的规则集中预先植入一系列规则,您仍然需要通过 UFW 的 CLI 界面创建规则,以了解规则通过验证并持久所需的注释的语法。

尝试上述操作,带注释和不带注释,然后重新加载上面的示例 HTTP 规则;您会注意到,只有带注释的手动添加的规则在重启后才能继续存在(ufw 启用) 的 UFW。

这确实是违反直觉的行为,而且根本没有记录。

相关内容