我有一个配置为 SNMP 代理的系统,它将 TRAPS 发送到配置为 SNMP 管理器的其他远程 m/c。现在,我想从这个 SNMP 代理使用 Linux 中现有的 IPTABLES 实用程序来限制 SNMP 陷阱的速率。我不想编写单独的应用程序来限制发送到 SNMP 管理器的 SNMP 陷阱的速率,而是想使用 OUTPUT 链中的 IPTABLE 规则来实现此功能。可以吗!如果可以,有人可以建议输出链中的规则吗?
答案1
像这样:
iptables -A OUTPUT -p tcp --dport 161 -m limit --limit 3/min --limit-burst 3 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 161 -j DROP
iptables -A OUTPUT -p udp --dport 161 -m limit --limit 3/min --limit-burst 3 -j ACCEPT
iptables -A OUTPUT -p udp --dport 161 -j DROP
使用 --limit 和 --limit-burst 值进行调整,直到您喜欢结果。
摘自 Rusty 的《极其不可靠的指南》(http://www.netfilter.org/documentation/index.html#documentation-howto):
limit
This module must be explicitly specified with `-m limit' or
`--match limit'. It is used to restrict the rate of matches,
such as for suppressing log messages. It will only match a given
number of times per second (by default 3 matches per hour, with
a burst of 5). It takes two optional arguments:
--limit
followed by a number; specifies the maximum average number of
matches to allow per second. The number can specify units
explicitly, using `/second', `/minute', `/hour' or `/day', or
parts of them (so `5/second' is the same as `5/s').
--limit-burst
followed by a number, indicating the maximum burst before the
above limit kicks in.