我运行 Ubuntu 16.04
在linux内核中,有一些关于数据包过滤条件的日志语句,我想看看它们是否真的被触发。
一个例子是:
/* Smaller that minimal TCP header? */
th = skb_header_pointer(skb, dataoff, sizeof(_tcph), &_tcph);
if (th == NULL) {
if (LOG_INVALID(net, IPPROTO_TCP))
nf_log_packet(net, pf, 0, skb, NULL, NULL, NULL,
"nf_ct_tcp: short packet ");
return -NF_ACCEPT;
}
https://github.com/torvalds/linux/blob/master/net/netfilter/nf_conntrack_proto_tcp.c 760路
如何设置我的 Linux 系统以便我可以在某处看到 nf_log_packet() 输出?也许在 /var/log/syslog 或其他一些目的地。
它在哪里记录?如何激活日志记录?
答案1
因此,以下步骤有效:
安装 Ulog,它与一些插件交互以捕获内核日志记录输出
sudo apt安装ulog2
然后通过 sudo echo "255" > /proc/sys/net/netfilter/nf_conntrack_log_invalid 激活状态 INVALID 日志记录
有关 255 的更多文档请参见此处: https://www.kernel.org/doc/Documentation/networking/nf_conntrack-sysctl.txt
在 /etc/ulog.conf 中设置要调试的 Ulog 捕获级别
那么日志,如果你触发它,将被存储在:/var/log/ulog/syslogemu.log