我正在运行最新的 Ubuntu Server,它被设置为 NAT 路由器。
我有一个在启动期间运行的 iptables 脚本来设置 NAT、端口转发等。
我正在尝试诊断与该盒子无关的问题,但是 /var/log/messages、/var/log/syslog 和 /var/log/kern.log 都充斥着来自 iptables 的消息,如下所示:
Oct 21 11:25:27 skip kernel: [39380.812663] INPUT packet died: IN=eth1 OUT= MAC=00:40:63:d9:7c:5b:00:03:fa:a9:d7:4a:08:00 SRC=24.207.21.237 DST=94.192.123.123 LEN=111 TOS=0x00 PREC=0x00 TTL=54 ID=16494 PROTO=UDP SPT=48865 DPT=20663 LEN=91
我找不到任何文档来明确说明如何更改 iptables 日志输出的方式。我理想情况下希望 iptables 内容不进入上述任何文件,而是进入 /var/log/iptables。
答案1
就是那个脚本。删除日志记录。
如果你真的想要日志(如果你不读它们那又何必呢?)然后使用 ULOGD:
答案2
我找不到任何文档来明确说明如何更改 iptables 日志输出的方式。我理想情况下希望 iptables 内容不进入上述任何文件,而是进入 /var/log/iptables。
默认情况下,iptables 内容会使用 kern 功能和信息优先级发送到 syslog。
您可以选择切换到更高级的系统日志,然后根据模式构建过滤器,或者您可以将所有 kern.info 内容发送到 /var/log/iptables。您可能会在 iptables 日志中获得除 iptables 之外的内容。
假设您尚未替换已安装的 syslog。您可能需要进行如下差异所示的更改。
--- syslog.conf 2008-08-29 17:40:57.000000000 -0700
+++ syslog.conf.tmp 2009-10-21 10:06:14.000000000 -0700
@@ -8,14 +8,17 @@
#
auth,authpriv.* /var/log/auth.log
-*.*;auth,authpriv.none -/var/log/syslog
+*.*;kern.!info;\
+ auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
-kern.* -/var/log/kern.log
+kern.*;kern.!info -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
+kern.info -/var/log/iptables.log
+
#
# Logging for the mail system. Split it up so that
# it is easy to write scripts to parse these files.
@@ -37,6 +40,7 @@
auth,authpriv.none;\
news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warning;\
+ kern.!info;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages
通过编辑 iptables 规则,您可以更改发送到 syslog 的日志条目的优先级,并且可以添加前缀以使用更高级的 syslog 进行过滤。
或者你可以使用 LapTop006 提到的 ULOG 目标,然后将其传递给用户空间守护进程,例如ulogd,幽灵或其他。