Centos 6.3 Servidor ignorando consultas IGMP

5

Estou usando um servidor CentOS 6.3 para assinar dados multicast UDP, e notei que meu servidor não responde às consultas IGMP enviadas pelo switch ao qual está conectado.

Como resultado, quando abro meu soquete multicast, começo a receber dados multicast, mas isso para quando minha assinatura IGMP atinge o tempo limite. O servidor não renova suas assinaturas IGMP, então o switch corta o fluxo multicast.

(Para garantir que o problema não venha de nenhum código meu, estou usando smcroute para abrir assinaturas multicast.)

Aqui está uma captura de tela das comunicações IGMP em qualquer interface do meu servidor:

link

Como podemos ver, meu servidor primeiro envia duas associações IGMP, mas alguns minutos depois, quando o switch envia a consulta de associação ao grupo IGMP, o kernel não responde.

A versão do conjunto de protocolos IGMP para a interface afetada é V2:

[root@localhost ~]# cat /proc/net/igmp
Idx Device    : Count Querier   Group    Users Timer    Reporter
1   lo        :     0      V2
                010000E0     1 0:00000000       0
2   eth0      :     5      V2
                FB0000E0     1 0:00000000       1
                010000E0     1 0:00000000       0
5   tap0      :     5      V3
                FB0000E0     1 0:00000000       0
            010000E0     1 0:00000000       0
7   eth1.371:    13      V2
            414000E0     1 0:00000000       1
            404000E0     1 0:00000000       1
            3F4000E0     1 0:00000000       1
            504000E0     1 0:00000000       1
            524000E0     1 0:00000000       1
            494000E0     1 0:00000000       1
            4A4000E0     1 0:00000000       1
            4B4000E0     1 0:00000000       1
            FB0000E0     1 0:00000000       0
            010000E0     1 0:00000000       0

O rp_filter está desativado nessa interface:

[root@localhost ~]# cat /proc/sys/net/ipv4/conf/eth1.371/rp_filter 
0
    
por Laurent 03.04.2013 / 14:14

1 resposta

4

Eu vi o mesmo sintoma - aparentemente, o kernel ignorou consultas de associação de grupos IGMP do roteador - em um CentOS 5 servidor. Eu rastreei o problema até uma configuração de firewall "negar por padrão".

Você, como eu, provavelmente não se sentou e pensou sobre o IGMP ao implementar seu firewall. A ferramenta CentOS system-config-firewall nem sequer pergunta sobre o IGMP, muito menos dar-lhe uma maneira de configurar a resposta do firewall aos pacotes IGMP.

O problema é o seguinte: se o seu firewall estiver configurado para rejeitar tudo o que não é especificamente permitido, o firewall bloqueará as consultas de membros do grupo IGMP de entrada do roteador de gateway da LAN e / ou Switches compatíveis com IGMP . O kernel não consegue espiar pelo firewall e ver esses pacotes, então ele nunca responde a eles se você não os deixar passar. O switch / roteador decide, depois de algum tempo, que ninguém em sua perna da rede está ouvindo esse fluxo de multicast, então ele pára de encaminhar para essa perna.

Para corrigir isso, você precisa adicionar a seguinte linha ao arquivo /etc/sysconfig/iptables , em algum lugar no meio do arquivo, entre as definições na parte superior e as regras REJECT na parte inferior:

-A INPUT -p igmp -j ACCEPT

Isso diz que todos os pacotes IGMP são permitidos, sem restrição.

Diga service iptables restart para que a nova regra entre em vigor.

Uma maneira rápida de testar se minha solução pode funcionar para você é dizer service iptables stop e ver se o IGMP repentinamente começa a funcionar corretamente. Obviamente, você só pode fazer isso em uma rede pacífica, em que deixar o firewall por breves instantes não é um sério risco de segurança.

    
por 09.06.2014 / 20:37