我希望允许来自本地VLAN 192.168.1.0/24以及CentOS机器上的0.0.0.0 ICMP和IGMP组播,所以我在入站链上添加了以下规则:
#ACCEPT - 来自当前VLAN的组播224.0.0.1以及0.0.0.0 # - ICMP iptables -A IP-INPUT -s 192.168.1.0/24 -d 224.0.0.1 -m pkttype -pkt-type multicast -protocol icmp -j ACCEPT iptables -A IP-INPUT -s 0.0.0.0 -d 224.0.0.1 -m pkttype -pkt-type multicast -protocol icmp -j ACCEPT # - IGMP iptables -A IP-INPUT -s 192.168.1.0/24 -d 224.0.0.1 -m pkttype -pkt-type multicast -protocol igmp -j ACCEPT iptables -A IP-INPUT -s 0.0.0.0 -d 224.0.0.1 -m pkttype -pkt-type multicast -protocol igmp -j ACCEPT
我也确保xt_pkttype内核模块被加载。
但是,这似乎并没有工作…我得到否认:
Oct 12 09:06:22 192.168.1.102 IPTABLES :: IN :: DENY 2 0.0.0.0 ==> 224.0.0.1
我注意到,拒绝行显示协议号( 2 ),而不是它的名字( IGMP ),但这似乎并不重要。 如果我用--protocol 2replace规则--protocol igmp ,它是一样的。
一些谷歌search后,我也注意到有些人这样做,但它也不适合我:
#ACCEPT - 来自当前VLAN的组播224.0.0.1以及0.0.0.0 iptables -A IP-INPUT -s 192.168.1.0/24 -d 224.0.0.1 -j ACCEPT iptables -A IP-INPUT -s 0.0.0.0 -d 224.0.0.1 -j ACCEPT
如果相关的话,我在内核版本为2.6.32-279.19.1.el6.x86_64 CentOS 6.3上使用iptables版本1.4.7 。
有谁能够帮助我? 提前致谢!
编辑:
/etc/sysconfig/iptables的请求内容(见下文) #由iptables-save v1.4.7生成1月16日星期三14:33:55 2013 *过滤 :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT DROP [0:0] :IP-FORWARD - [0:0] :IP-INPUT - [0:0] :IP-OUTPUT - [0:0] -Ainput-j IPinput -A向前-j IP向前 -A OUTPUT -j IP-OUTPUT -A IP-FORWARD -j LOG - 日志前缀“server-FORWARD:” -IP-FORWARD -j DROP -A IP-INPUT -i lo -m注释 - 注释“接收所有包ON LOOPBACK”-j ACCEPT -A IP-INPUT -m状态 - 状态RELATED,ESTABLISHED -j ACCEPT -A IP-INPUT -s 192.168.1.0/24 -d 224.0.0.1/32 -p icmp -m pkttype -pkt-type multicast -j ACCEPT -A IP-INPUT -d 224.0.0.1/32 -p icmp -m pkttype -pkt-type multicast -j ACCEPT -A IP-INPUT -s 192.168.1.0/24 -d 224.0.0.1/32 -p igmp -m pkttype -pkt-type multicast -j ACCEPT -A IP-INPUT -d 224.0.0.1/32 -p igmp -m pkttype -pkt-type multicast -j ACCEPT -A IP-INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m状态--state NEW -j ACCEPT -A IP-INPUT -p icmp -f -m注释 - 注释“DROP fragmented icmp”-j DROP -A IP-INPUT -p icmp -m注释 - 注释“ACCEPT incoming icmp”-j ACCEPT -A IP-INPUT -p tcp -m tcp -tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -m注释 - 注释“DROP包含非法标志”-j DROP -A IP-INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP -A IP-INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP -A IP-INPUT -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j DROP -A IP-INPUT -p tcp -m tcp -tcp -flag FIN,ACK FIN -j DROP -A IP-INPUT -p tcp -m tcp --tcp-flags PSH,ACK PSH -j DROP -A IP-INPUT -p tcp -m tcp --tcp-flags ACK,URG URG -j DROP -A IP-INPUT -m状态 - 状态无效-j日志 -A IP-INPUT -m状态 - 状态INVALID -j DROP -A IP-INPUT -j LOG - 日志前缀“server-INPUT:” -A IP-OUTPUT -m状态 - 状态INVALID -j LOG - 日志前缀“server-OUTPUT:” -A IP-OUTPUT -m状态 - 状态INVALID -j DROP -A IP-OUTPUT -o lo -m注释 - 注释“接受所有数据包ON LOOPBACK”-j ACCEPT -A IP-OUTPUT -m状态 - 状态RELATED,ESTABLISHED -j接受 -A IP-OUTPUT -p icmp -f -m注释 - 注释“DROP fragmented icmp”-j DROP -A IP-OUTPUT -p icmp -m注释 - 注释“ACCEPT outgoing icmp”-j ACCEPT -A IP-OUTPUT -j LOG - 日志前缀“server-OUTPUT:” 承诺 #2013年1月16日星期三14:33:55完成
您在LOG和DROPstream量的规则之后添加了规则。 这些规则应该是表中的最后规则。 只要重新排列线条,使它们最后出现。
如果你想让你的机器响应组播ping,你必须运行
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=0
默认情况下,ICMP广播/多播被忽略,原因很明显。