我有以下规则iptables
:
-A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
这样,未分类为已建立的传出连接将被记录。有时,防火墙出口日志会捕获此类数据包:
09:56:48 DST=a.b.167.208 TTL=64 SPT=80 DPT=25960 WINDOW=119 ACK URGP=0
09:48:48 DST=a.b.166.231 TTL=64 SPT=80 DPT=29861 WINDOW=119 ACK PSH URGP=0
09:29:57 DST=a.b.167.244 TTL=64 SPT=80 DPT=58244 WINDOW=119 ACK URGP=0
经过进一步检查,Web 服务器访问日志显示,之前有与上述 IP 地址 75-100 对应的传入连接。
为什么上述连接没有被归类为由 conntrack 模块建立的?怎样才能滤除噪音呢?
答案1
根据我的理解,TCP连接只进入ESTABLISHED
状态后已经ACK
完成了,这些ACK
包正是您在那里记录(和阻止)的内容。
http://www.iptables.info/en/connection-state.html#TCPCONNECTIONS
你有没有尝试过--ctstate ESTABLISHED,RELATED
?
关于仅“偶尔”记录,正如您所说的:dmesg/syslog 不会捕获所有数据包。如果收到太多类似消息,它们将被丢弃以避免日志泛滥。这是可配置的,但超出了这个问题的范围。