Ubuntu:如何添加UFW无法创建的iptables规则


15

UFW对我来说真的很好,除了在某些情况下...

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

  • 我该把规则放在哪里?
  • 我应该如何使其在启动时启动?
  • 如何使其与UFW完美配合?

1
ufw是那些“所见即所得”的功能之一,它使新手更容易使用。如果您需要做的比其所能做的更多,请考虑完全切换到iptables。“对我来说真的很好”是一个很好的证明,您可以尝试更复杂(但也更灵活)的某些东西(iptables)。
2010年

Answers:


14

根据此Ubuntu Wiki页面(向下滚动至“高级功能”),您可以通过将自己的iptables规则放入以下文件中来实现所需的功能:

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

before任何之前的文件被评估ufw被应用规则; 在after之后的文件进行评估。(对于您的规则,还有相应的before6after6规则文件ip6tables。)

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


3
请注意,如果您在使用这些文件时忘记标准化-I或-A的使用,则可以(可能无意地)更改iptables规则的优先级。-I(插入)将规则添加到链的顶部,首先评估,而-A(附加)将规则添加到链的底部。例如,如果在.after文件中使用-I,则可能会导致意外结果。只是一个想法。
山姆·哈利克

0

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 enable)后仍然有效。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.