“iptables” 中的多播问题

“iptables” 中的多播问题

我的问题与多播和有关iptables

我想允许来自本地 VLAN192.168.1.0/24以及0.0.0.0我的 CentOS 机器的 ICMP 和 IGMP 多播,因此我在入站链中添加了以下规则:

# 接受 - 从当前 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内核模块已加载。

但这似乎不起作用......我被拒绝了:

10月12日 09:06:22 192.168.1.102 IPTABLES::IN::DENY 2 0.0.0.0 ==> 224.0.0.1

我注意到拒绝行显示的是协议号 ( 2),而不是其名称 ( IGMP),但这似乎无关紧要。如果我--protocol igmp在规则中将其替换为--protocol 2,结果是一样的。

经过谷歌搜索后,我还注意到有些人这样做,但这对我来说不起作用:

# 接受 - 从当前 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 接受
iptables -A IP-INPUT -s 0.0.0.0 -d 224.0.0.1 -j 接受   

如果相关,我使用CentOS 上的iptables版本和内核版本。1.4.76.32.6.32-279.19.1.el6.x86_64

有人能帮助我吗?提前谢谢!

编辑:

  • 请求的内容/etc/sysconfig/iptables(见下文)
  • 迈克尔·汉普顿建议的规则变更
# 由 iptables-save v1.4.7 于 2013 年 1 月 16 日星期三 14:33:55 生成
*筛选
:输入下降 [0:0]
:前锋丢球 [0:0]
:输出下降 [0:0]
:IP 转发 - [0:0]
:IP 输入 - [0:0]
:IP 输出 - [0:0]
-A 输入-j IP 输入
-A 转发 -j IP 转发
-A 输出 -j IP-输出
-A IP-FORWARD -j LOG --log-prefix “服务器转发:”
-A IP转发-j DROP
-A IP-INPUT -i lo -m comment --comment “接受环回上的所有数据包” -j ACCEPT
-A IP-INPUT -m 状态 --state 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 多播 -j 接受
-A IP-INPUT -d 224.0.0.1/32 -p icmp -m pkttype --pkt-type 多播 -j 接受
-A IP-INPUT -s 192.168.1.0/24 -d 224.0.0.1/32 -p igmp -m pkttype --pkt-type 多播 -j 接受
-A IP-INPUT -d 224.0.0.1/32 -p igmp -m pkttype --pkt类型多播-j 接受
-A IP-INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m state --state NEW -j 接受
-A IP-INPUT -p icmp -f -m 注释 --注释“DROP fragmented icmp” -j DROP
-A IP-INPUT -p icmp -m 注释 --注释“接受传入 icmp” -j 接受
-A IP-INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -m comment --comment "丢弃带有非法标志的数据包" -j DROP
-A IP-INPUT -p tcp -m tcp --tcp 标志 FIN,SYN FIN,SYN -j DROP
-A IP-INPUT -p tcp -m tcp --tcp 标志 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-flags 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 LOG
-A IP-INPUT -m 状态 --状态无效 -j DROP
-A IP-INPUT -j LOG --log-prefix “服务器输入:”
-A IP-OUTPUT -m 状态 --state INVALID -j LOG --log-prefix “服务器输出:”
-A IP-OUTPUT -m 状态 --状态无效 -j DROP
-A IP-OUTPUT -o lo -m comment --comment “接受环回上的所有数据包” -j ACCEPT
-A IP-OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A IP-OUTPUT -p icmp -f -m 注释 --注释“DROP fragmented icmp” -j DROP
-A IP-OUTPUT -p icmp -m comment --comment “接受传出 icmp” -j ACCEPT
-A IP-OUTPUT -j LOG --log-prefix “服务器输出:”
犯罪
# 于 2013 年 1 月 16 日星期三 14:33:55 完成

答案1

你在记录和丢弃流量的规则之后添加了规则。这些规则应该是最后的表中的规则。只需重新排列各行,使它们出现在最后即可。

答案2

如果你希望你的机器响应多播 ping,你必须运行

sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=0

默认情况下,出于显而易见的原因,此 ICMP 广播/多播会被忽略。

相关内容