如何在 Debian Squeeze 上启用 IPtables TRACE 目标(6)

如何在 Debian Squeeze 上启用 IPtables TRACE 目标(6)

我正在尝试使用 IPtables 的 TRACE 目标,但似乎无法记录任何跟踪信息。我想使用此处描述的内容: Iptables 调试器

来自 iptables man 的 TRACE 信息:

   This target marks packes so that the kernel will log every  rule  which
   match  the  packets  as  those traverse the tables, chains, rules. (The
   ipt_LOG or ip6t_LOG module is required for the  logging.)  The  packets
   are   logged   with   the   string   prefix:  "TRACE:  tablename:chain-
   name:type:rulenum " where type can be "rule" for plain  rule,  "return"
   for  implicit  rule at the end of a user defined chain and "policy" for
   the policy of the built in chains.
   It can only be used in the raw table.

我使用以下规则:iptables -A PREROUTING -t raw -p tcp -j TRACE但 /var/log/syslog 或 /var/log/kern.log 中都没有附加任何内容!

是否还缺少其他步骤?我找错地方了吗?

编辑

尽管我找不到日志条目,但由于数据包计数器已递增,因此 TRACE 目标似乎设置正确:

# iptables -L -v -t raw
Chain PREROUTING (policy ACCEPT 193 packets, 63701 bytes)
 pkts bytes target     prot opt in     out     source               destination
  193 63701 TRACE      tcp  --  any    any     anywhere             anywhere

Chain OUTPUT (policy ACCEPT 178 packets, 65277 bytes)
 pkts bytes target     prot opt in     out     source               destination

编辑2

规则iptables -A PREROUTING -t raw -p tcp -j LOG 将数据包信息打印到 /var/log/syslog... 为什么 TRACE 不起作用?

答案1

跑步:

modprobe ipt_LOG

这帮我解决了这个问题。

答案2

似乎(对我来说是可行的)新内核需要这个(对于 IPv4):

modprobe nf_log_ipv4
sysctl net.netfilter.nf_log.2=nf_log_ipv4

致谢:

答案3

我发现我需要按照以下顺序执行前面两个答案:

sudo modprobe ipt_LOG
sudo sysctl net.netfilter.nf_log.2=ipt_LOG

以下是我在这一过程中发现的一些事情。

您可以使用以下命令获取有效记录器列表(以及当前选定的记录器):

cat /proc/net/netfilter/nf_log

这里的数字代表协议系列编号,如所定义的/usr/include/bits/socket.h。2 是AF_INET(即 IPv4),10 是AF_INET6(即 IPv6)。

答案4

这对我有用sudo sysctl net.netfilter.nf_log.2=ipt_LOG

相关内容