Мой вопрос касается многоадресной рассылки и iptables
.
Я хочу разрешить многоадресную рассылку ICMP и IGMP из локальной VLAN 192.168.1.0/24
а также от 0.0.0.0
на моей машине CentOS, поэтому я добавил следующие правила в свою входящую цепочку:
# ACCEPT - Multicast 224.0.0.1 from current VLAN as well as 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 igmp
в правилах с --protocol 2
это то же самое.
После некоторого поиска в Google я также заметил, что некоторые люди делают это таким образом, но у меня это также не работает:
# ACCEPT - Multicast 224.0.0.1 from current VLAN as well as 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
Если необходимо, я использую iptables
версия 1.4.7
на CentOS 6.3
с версией ядра 2.6.32-279.19.1.el6.x86_64
.
Кто-нибудь может мне помочь? Заранее спасибо!
Редактировать:
/etc/sysconfig/iptables
(увидеть ниже)# Generated by iptables-save v1.4.7 on Wed Jan 16 14:33:55 2013 *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT DROP [0:0] :IP-FORWARD - [0:0] :IP-INPUT - [0:0] :IP-OUTPUT - [0:0] -A INPUT -j IP-INPUT -A FORWARD -j IP-FORWARD -A OUTPUT -j IP-OUTPUT -A IP-FORWARD -j LOG --log-prefix "server-FORWARD: " -A IP-FORWARD -j DROP -A IP-INPUT -i lo -m comment --comment "ACCEPT all packets ON LOOPBACK" -j ACCEPT -A IP-INPUT -m state --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 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 --state NEW -j ACCEPT -A IP-INPUT -p icmp -f -m comment --comment "DROP fragmented icmp" -j DROP -A IP-INPUT -p icmp -m comment --comment "ACCEPT incoming icmp" -j ACCEPT -A IP-INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -m comment --comment "DROP packets with illegal flags" -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-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 state --state INVALID -j LOG -A IP-INPUT -m state --state INVALID -j DROP -A IP-INPUT -j LOG --log-prefix "server-INPUT: " -A IP-OUTPUT -m state --state INVALID -j LOG --log-prefix "server-OUTPUT: " -A IP-OUTPUT -m state --state INVALID -j DROP -A IP-OUTPUT -o lo -m comment --comment "ACCEPT all packets ON LOOPBACK" -j ACCEPT -A IP-OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A IP-OUTPUT -p icmp -f -m comment --comment "DROP fragmented icmp" -j DROP -A IP-OUTPUT -p icmp -m comment --comment "ACCEPT outgoing icmp" -j ACCEPT -A IP-OUTPUT -j LOG --log-prefix "server-OUTPUT: " COMMIT # Completed on Wed Jan 16 14:33:55 2013
Вы добавили свои правила ПОСЛЕ правил, которые регистрируют и удаляют ваш трафик. Эти правила должны быть последний правила в таблице. Просто переставьте линии так, чтобы они появлялись последними.
Если вы хотите, чтобы ваш компьютер отвечал на многоадресный пинг, вам нужно запустить
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=0
По умолчанию широковещательная / многоадресная рассылка ICMP игнорируется по очевидным причинам.