如何模拟一个源IP来testing哪个iptables规则不被触发?

我们有一个相当复杂的iptables / ipchainsconfiguration,由APF生成。 到端口80的stream量应该被阻止,但是我们的Apache日志显示有人能够探测网页:

[Sun Feb 03 13:08:45 2013] [error] [client 50.57.125.169] File does not exist: /var/www/w00tw00t.at.blackhats.romanian.anti-sec:) [Sun Feb 03 13:08:45 2013] [error] [client 50.57.125.169] File does not exist: /var/www/phpMyAdmin [Sun Feb 03 13:08:45 2013] [error] [client 50.57.125.169] File does not exist: /var/www/phpmyadmin 

有没有办法在iptables中模拟源IP来debugging为什么50.57.125.169数据包没有被阻塞? -C | --check -C | --check选项似乎只报告是否存在明确匹配IP的规则,但是我想要做的是( 伪代码

 myserver% iptables --test --source_ip=50.57.125.169 --dest_port=80 Rule #17 matches (ALLOW) // ie this would be the rule that matches 

有没有办法做到这一点?

一个部分的解决scheme是在iptables上启用TRACEdebugging(参见https://serverfault.com/a/126078/67472 ),并使用可以欺骗源IP的hping3 (感谢Trent)。 但是,如果testing是从不同的服务器运行,并且从同一台服务器运行,则结果不会显示在环回接口上。

您可以使用hping来模拟stream量的源IP地址,然后检查stream量是否仍然通过? 可能不是你正在寻找的东西,但你可以做类似的事情

 hping3 --syn --destport 80 --count 3 -a test.ip.address webserver.ip.address 

您可以使用scapy来欺骗您的IP地址。

我知道我并不是直接解决你所问的问题,而是使用APF很长一段时间,如果你使用了不同的方法,我可以告诉你如何阻止IP。

例如:为主机阻塞端口80 /etc/apf/deny_hosts.rules添加以下行/etc/apf/deny_hosts.rules

  tcp:in:d=80:s=1.2.3.4 

除此之外,为了不经过欺骗源IP的麻烦,为什么不试图在自己的控制下阻止某些客户端计算机的IP地址,并尝试连接它。