iptables“recent”模块-设置模块参数

iptables“recent”模块-设置模块参数

iptables 'recent' 模块的手册页解释说模块本身接受参数。如何设置这些参数?我猜想它们应该设置在模块加载的某个地方。但我不知道那是在哪里。

有人有什么想法吗?

答案1

如果您手动加载模块,只需将其添加到 modprobe 命令行:

modprobe ipt_recent param1=val1 param2=val2

否则,如果它被自动加载,您可以在 中创建一个文件/etc/modprobe.d,例如/etc/modprobe.d/ipt_recent,其内容为:

options ipt_recent param1=val1 param2=val2

它将执行与上面的 modprobe 行相同的操作。

答案2

警告:了解更改这一点会对机器的内存使用产生影响,因为这些详细信息存储在内存中,并且 iptables 需要更多的资源来处理存储大量数据。

设置 xt_recent 配置文件

创建文件 /etc/modprobe.d/xt_recent.conf 并包含如下行:

options xt_recent ip_list_tot=50 ip_pkt_list_tot=150

不要忘记添加一些关于你正在做的事情的评论。将来你会感谢你的。

准备重新初始化 xt_recent

在我们删除当前使用最新模块的防火墙中的任何规则或简单地禁用防火墙之前。您可能希望在执行此操作之前保存规则,sudo iptables-save > somefile.txt或者sudo service iptables save如果您的发行版支持这一点。

根据您的情况选择其中之一进行清理。您也可以在此时重新启动计算机并跳至添加规则。

关闭 iptables

sudo service iptables stop

删除特定规则:

  1. 使用iptables -L --line-numbers列出规则并在规则中查找“最近:”。
  2. 使用iptables -D INPUT ## 来删除规则的行号。

重新初始化 xt_recent

使用 删除模块sudo modprobe -r xt_recent。使用 将其添加回来sudo modprobe xt_recent

检查以确保您的参数已应用sudo cat /sys/module/xt_recent/parameters/ip_pkt_list_tot

添加您无法添加的规则

如果您停止了 iptablessudo service iptables start则将其恢复。

重新添加您想要的更高值的规则。

奖金:

sudo watch 'iptables -nvL'将允许您观看符合 xt_recent 规则的内容。

答案3

我没有信誉来回复 TopQ 的答案,但我注册了一个帐户只是为了告诉人们不要按照他的建议去做。模块的源代码(http://lxr.linux.no/linux+v3.9/net/netfilter/xt_recent.c) 没有规定检测该参数的变化,也没有规定重新分配负责跟踪最近命中的内核缓冲区。

因此,如果您将该参数设置为可写并随后进行更改,则现有的最近命中日志的后续条目将超出先前分配的内核缓冲区并导致内核恐慌。

答案4

如果模块已经加载,您仍然可以通过操作 /sys/module/ipt_recent/parameters/ 中的值来更改参数。

例如,要更改 ip_pkt_list_tot 的值,您可以执行以下操作:

echo 200 > /sys/module/ipt_recent/parameters/ip_pkt_list_tot

当然,你得获得许可。

相关内容