Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux kernel 使用iptables丢弃具有匹配字符串的数据包会丢弃所有不匹配的后续数据包_Linux Kernel_Iptables - Fatal编程技术网

Linux kernel 使用iptables丢弃具有匹配字符串的数据包会丢弃所有不匹配的后续数据包

Linux kernel 使用iptables丢弃具有匹配字符串的数据包会丢弃所有不匹配的后续数据包,linux-kernel,iptables,Linux Kernel,Iptables,我正在尝试在应用层编写一个蠕虫过滤实用程序 我设置了以下规则来丢弃带有特定子字符串的tcp数据包 iptables-A INPUT-p tcp-m string--string“test”-j DROP--algokmp 但是,一旦找到了具有匹配字符串的数据包,所有后续数据包(即使是具有不匹配字符串的数据包)都将被丢弃,直到我从iptable刷新规则为止 我想知道为什么会发生这种情况,解决办法是什么 感谢tcp是一种面向连接的可靠协议,用于维护发送数据的顺序。它不断尝试更改特定的有效负载,直到到

我正在尝试在应用层编写一个蠕虫过滤实用程序

我设置了以下规则来丢弃带有特定子字符串的tcp数据包

iptables-A INPUT-p tcp-m string--string“test”-j DROP--algokmp

但是,一旦找到了具有匹配字符串的数据包,所有后续数据包(即使是具有不匹配字符串的数据包)都将被丢弃,直到我从iptable刷新规则为止

我想知道为什么会发生这种情况,解决办法是什么


感谢

tcp是一种面向连接的可靠协议,用于维护发送数据的顺序。它不断尝试更改特定的有效负载,直到到达该有效负载,因此在到达较旧的有效负载之前,您无法发送其他后续有效负载,这就是为什么您感觉所有后续数据包都被丢弃的原因


如果为udp设置类似的规则,则不会发生这种情况,您将能够接收与字符串不匹配的所有后续数据包。这是因为udp是一种无连接、不可靠的协议。

这里有点晚了,但看到有类似问题的人。规避此问题的一种方法是在原始链中执行此规则。所有数据包都会在数据包上放置任何类型的conntrack之前到达这里,因此最好在这里进行过滤

iptables -A PREROUTING -t raw -p tcp -m string --string "test" -j DROP --algo kmp

我认为在serverfault.com上,这将被认为是一个好问题。