如何在流量触及现有 iptables conntrack 规则之前丢弃流量?

如何在流量触及现有 iptables conntrack 规则之前丢弃流量?

我正在运行一个应用程序,将 iptables 连接跟踪规则注入内核,以便机器可以尽快将传入的 UDP 流量转发到其目的地。

这台机器上接收的一些流量并不完全符合规格,接收方并不总是按应有的方式处理这些流量。不幸的是,发送方硬件供应商说他们发送的内容没有问题,而接收方供应商说发送方永远不应该发送这样的流量,所以我陷入了困境,试图解决问题。

我完全控制流量的服务器使用 iptables 连接跟踪,使用来自另一个应用程序的输入将流量从一个发送方转发到接收方。有问题的流量很容易识别,它是发送方发送的唯一使用 0 长度 UDP 有效负载的流量。

如何确保在 conntrack 转发 UDP 消息之前触发 iptables 规则删除有问题的流量?

使用iptables -A INPUT -p udp --dport 50000:60000 -m length --length 8 -j DROP不起作用,数据包仍然流经机器。我也尝试使用长度 8(UDP 标头大小),但结果是一样的。

答案1

要过滤转发的流量,您需要 FORWARD 链,INPUT 链用于发往规则所在系统的流量。

答案2

正如 Timothy Baldwin 所建议的,过滤器应该位于 FORWARD 链上。长度参数不适用于 UDP 有效负载或数据包长度,而自然适用于 IP 数据包长度

因此,有效的命令是iptables -A FORWARD -p udp --dport 50000:60000 -m length --length 28 -j DROPIP 头的长度为 20 字节,UDP 头的长度为 8 字节

相关内容