我的问题与多播和有关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.7
6.3
2.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 广播/多播会被忽略。