iptablesstring匹配适用于VM主机,但不适用于guest虚拟机

已经在带有桥接接口的Linux KVM虚拟机(Fedora 12&13 64位)上testing了一些iptablesstring匹配规则,例如在其他端口80规则之前的INPUT链中的规则

-m string –algo bm –icase –string“phpMyAdmin”-j LOG – 日志前缀“phpmyadmin test”

但是,尽pipe事实上“phpMyAdmin”的各种GET命令正在触发服务器日志,但并没有logging任何stream量。

另一方面,如果我在-m physdev -physdev-is-bridged -j ACCEPT规则之前将相同的规则放在KVM主机上的FORWARD链中,那么这些GET请求将被成功logging。

有谁知道这是为什么,或者它可能是guest虚拟机的virtio局域网驱动程序中的错误? 我知道GET请求有可能跨越多个数据包,但是我用tcpdump捕获certificate这不是问题。

而且还要提到,客人INPUT链中的其他规则正在按预期工作。 只有string匹配规则不起作用的问题。

我有一个与VirtualBox类似的问题,string匹配没有发生在input。 后来我发现匹配的string必须是HTML编码的; 所以如果你有一个空间,你需要把编码的HTML空间,同样也正向斜杠。

我build议使用tcpdump; 它帮助我debugging这个问题。