记录 iptables 中丢弃的数据包的内容

记录 iptables 中丢弃的数据包的内容

我正在尝试找到一种方法来记录根据 iptables 中的规则丢弃的数据包的全部内容(可能使用 tcpdump)。

目前,我有一个规则来记录这些数据包(带有日志前缀),然后遵循该规则来丢弃它们。

有没有办法记录这些数据包的内容以供审查然后

所以,我正在寻找这个:

  1. 记录匹配数据包的规则
  2. 将数据包传递到记录其内容的新目标的规则(可能是 QUEUE 目标?)
  3. 丢弃数据包的规则

2和3甚至可以组合。

我的理解是 tcpdump 可能无法执行此操作,因为它检查数据包iptables 因此不会只记录丢弃的数据包。

谢谢。

答案1

NFLOG 目标可用于此目的。这是一个非常基本的例子:

# Drop traffic by default
iptables -P INPUT DROP

# add your whitelists here
# iptables -A INPUT ...

# Pass the packets to NFLOG (just like LOG, but instead of syslog,
# it uses netlink). You can add extra filters such as '-p tcp' as usual
iptables -A INPUT -j NFLOG
# packets that get here will now be dropped per INPUT policy

# Finally you can use tcpdump to capture from this interface (there
# can only be one active user of nflog AFAIK)
tcpdump -i nflog ...

iptables-extensions有关目标的说明,请参阅手册页NFLOG

相关内容