已经在带有桥接接口的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这个问题。