我正在尝试让 rsyslog 记录到以下自定义日志文件
/var/log/iptables.conf
而不是syslog
。Iptables
已启用日志记录,下面是从 iptables 输出的示例日志行(取自/var/log/syslog
)
Apr 19 04:47:41 local-tester kernel: [221395.082051] iptables-denied: IN=eth1 OUT= MAC=01:00:5e:00:00:fb:00:80:92:87:56:b9:08:00 SRC=192.168.1.4 DST=224.0.0.251 LEN=32 TOS=0x00 PREC=0x00 TTL=1 ID=52488 PROTO=2
我创建了一个新的 rsyslog 配置文件/etc/rsyslog.d/iptables.conf
并输入以下内容
# iptables logging
:msg, startswith, "iptables-denied: " /var/log/iptables.log
并重新启动
sudo /etc/init.d/rsyslog restart
那没有创建/var/log/iptables.log
所以我手动创建了
Iptables 日志消息仍然会/var/log/syslog
为什么我仍然没有在自定义日志文件中获取任何 iptables 日志条目:/var/log/iptables.log
?
操作系统是 Ubuntu 14.04。
如果
模式不匹配,我尝试了这个配置*.* /var/log/iptables.log
- 仍然没有结果
答案1
消息不是以开头的,iptables-denied:
因为[221395.082051]
实际上是消息的一部分。内核可以配置为生成带有或不带有时间戳的日志消息,以指示启动后多少秒生成了特定消息。
一旦消息到达,syslog
就不再知道消息的结构。它只是一个长字符串,恰好以方括号中的数字开头。
如果您想要匹配这些字符串的内容,您应该以相同的方式执行匹配,无论内核是否生成带有或不带有时间戳的消息,这样即使该设置发生变化,您的匹配仍将继续工作。