标题说明了一切.
我如何使用Linux下的iptables记录连接到服务器的所有IP?
作为一个小细节,我想在日志PER每日IP中只有一个条目.
谢谢 :)
编辑:
我把它缩小到每个新会话记录的5个包,这很奇怪,因为我使用–hashlimit 1 –haslimit-burst 1,我怀疑–m limit默认为5在那里起作用.麻烦的是,如果我将-m limit设置为1,则只记录1个条目用于所有IP,而不是每个EACH IP一个条目.
我想这样做的原因还在于尽可能避免日志增长太快,因为这将是一个相当无管理的盒子.
EDIT2:
这是我目前的尝试,以iptables-restore格式:
(为了便于阅读,在几行上)
-A FORWARD -d 10.x.x.x -p tcp --dport 443 -m state --state NEW -m hashlimit --hashlimit-upto 1/min --hashlimit-burst 1 --hashlimit-mode srcip --hashlimit-name denied-client -j LOG --log-prefix "iptables (denied client): "
解决方法
我会试试这个:
# IP address entry older than one day iptables -A ... -m recent --name mydaily ! --rcheck ! --seconds 86400 -j logandset # IP address never seen before iptables -A ... -m recent --name mydaily ! --rcheck -j logandset # Custom chain for logging and refreshing iptables -N logandset iptables -A logandset -j LOG iptables -A logandset -m recent --name mydaily --set
因此,您的列表mydaily将跟踪最后看到的IP地址,如果以前从未见过,或者如果最后一次看到的是超过一天,则将记录数据包,并更新该IP地址的列表条目.
您应该将ip_list_tot设置为更高的mydaily值,如iptables联机帮助页(在/ proc / net / xt_recent / mydaily中的情况)中所述.