如何记录iptables之后的数据包?

How to record the packets after iptables?

我想记录iptables之后的数据包(使用tcpdump),但是tcpdump似乎会记录所有的数据包。我不希望数据包被 iptables 丢弃。

有什么办法

谢谢。

Tcpdump 在入站流量的 iptables 之前起作用,但您可以使用 iptables "NFLOG" 扩展来达到您的目标:http://ipset.netfilter.org/iptables-extensions.man.html#lbDI

使用 "NFLOG" 目的地,你可以将所需的数据包记录到用户空间应用程序,这就是 tcpdump 所属的地方(你也可以将流量分配给特定的组,然后告诉 tcpdump 从中监听)。

Web 服务器(非常基本)示例,假设您正在接受 http/https 流量并丢弃 ssh:

#BASIC RULES
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

#NFLOG REDIRECT ONLY HTTP TRAFFIC
iptables -A INPUT -p tcp --dport 80 -j NFLOG

#TCPDUMP ONLY ON MATCHED TRAFFIC (=HTTP)
tcpdump -i nflog