我不想将iptables
的日志输出与其他系统日志混合。如何为iptables
LOG 链输出指定专用日志文件?
答案1
如何执行此操作取决于您使用的日志守护程序,syslog
或者syslog-ng
.
和系统日志,您可以通过调整特定日志级别以仅包含iptables
消息来做到这一点。
在/etc/syslog.conf
:
kern.warning /var/log/iptables
iptables
使用该日志级别的设置:
iptables -A INPUT -j LOG --log-level 4
有了syslog-ng
你,你应该能够变得更花哨一点。您可以过滤内容并将该内容发送到特定的日志文件,而不是破坏日志级别。
在/etc/syslog-ng/syslog-ng.conf
:
destination d_iptables { file("/var/log/iptables"); };
filter f_iptables { match("IN=[A-Za-z0-9\.]* OUT=[A-Za-z0-9\.]*" value("MESSAGE")); };
log { source(s_sys); filter(f_iptables); destination(d_iptables); }
答案2
你可以使用这样的东西:
:msg,contains,"IPTABLES:" /var/log/iptables
& stop
它应该添加在任何其他规则之前,例如:
:msg,contains,"IPTABLES:" /var/log/iptables
& stop
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
...
您只需将 更改IPTABLES:
为您在 LOG 目标中设置的内容即可。如果您不使用& stop
,该消息将记录在两个文件中:标准/var/log/syslog
文件和/var/log/iptables
.
这是比重定向所有 kern.warning 消息更好的解决方案,因为在这种情况下,您可以重定向一些其他信息,而不仅仅是您想要的信息。