大佬教程收集整理的这篇文章主要介绍了linux – 在虚拟IP上发送的数据包不会命中iptables规则,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
iptables -A INPUT -d 222.192.124.3 -j LOG --log-level warning --log-prefix "VIP3-IN: "
当我运行tcpdump并从另一台机器上发送这个IP的数据包时,我看到它们,所以我认为它们是由内核正确接收和处理的,但iptables从不记录这些数据包,当我运行iptables -nvL时,数据包计数为该规则不会增加,就像它们从未达到规则一样(或者如果iptables甚至看不到该接口上的数据包).
我首先想到了另一个与数据包匹配的规则,因此在它到达LOG规则之前处理它,所以我删除了每个iptables规则并只添加了日志记录规则,没有更多的成功.
服务器在RHel 6.2上运行,具有2.6.32内核,在VMware ESX上进行虚拟化.
这是iptables -nvL的完整输出:
Chain INPUT (policy ACCEPT 40 packets,2891 bytes) pkts bytes target prot opt in out source desTination 0 0 LOG all -- * * 0.0.0.0/0 222.192.124.3 LOG flags 0 level 4 prefix `VIP3-IN: ' Chain FORWARD (policy ACCEPT 0 packets,0 bytes) pkts bytes target prot opt in out source desTination Chain OUTPUT (policy ACCEPT 34 packets,3816 bytes) pkts bytes target prot opt in out source desTination
以下是tcpdump输出的示例,显示传入的数据包(tcpdump -n -nn -vvv -i eth1“host 203.0.59.135”):
10:26:01.259409 IP (tos 0x50,ttl 121,id 26746,offset 0,flags [DF],proto TCP (6),length 52) 203.0.59.135.62332 > 222.192.124.3.8888: Flags [S],cksum 0x8da8 (correct),seq 3373891789,win 8192,options [mss 1460,nop,wscale 8,sackOK],length 0
eth1:3 Link encap:Ethernet HWaddr 00:50:56:AC:35:35 inet addr:222.192.124.3 Bcast:222.192.127.255 Mask:255.255.252.0 UP BroaDCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
更新:
iptables diagram http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/images/ce.Iptables.gif
在上图的帮助下,我在不同的表中设置了iptables规则,以查看数据包的去向.我想出了以下脚本:
IPT_FILTER="iptables -t filter" IPT_MANGLE="iptables -t mangle" IPT_NAT="iptables -t nat" $IPT_FILTER -F $IPT_FILTER -X $IPT_FILTER -A INPUT -d 222.192.124.0/22 -j LOG --log-prefix "DEBUG filter: " $IPT_FILTER -Z $IPT_MANGLE -F $IPT_MANGLE -X $IPT_MANGLE -A PRERoutING -d 222.192.124.0/22 -j LOG --log-prefix "DEBUG mangle/preroutIng: " $IPT_MANGLE -A INPUT -d 222.192.124.0/22 -j LOG --log-prefix "DEBUG mangle/input: " $IPT_MANGLE -Z $IPT_NAT -F $IPT_NAT -X $IPT_NAT -A PRERoutING -d 222.192.124.0/22 -j LOG --log-prefix "DEBUG nat/preroutIng: " $IPT_NAT -Z
并且看起来数据包通过mangle / PRERoutING和nat / PRERoutING表,但是没有击中mangle / INPUT表,所以我猜它在“防火墙数据”上采用“否”分支.并不是一个网络或系统专家(最多是一个高级用户),这是我迷路的地方,不知道发生了什么……
最终编辑(解决方案)
正如@nodens在其答案中所建议的那样,问题是由RPF处于“严格”模式引起的……对于如此简单的设置来说,这太令人头疼……
以上是大佬教程为你收集整理的linux – 在虚拟IP上发送的数据包不会命中iptables规则全部内容,希望文章能够帮你解决linux – 在虚拟IP上发送的数据包不会命中iptables规则所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。