Centos 6.3 서버가 IGMP 쿼리를 무시합니다

Centos 6.3 서버가 IGMP 쿼리를 무시합니다

저는 UDP 멀티캐스트 데이터를 구독하기 위해 CentOS 6.3 서버를 사용하고 있는데, 제 서버가 연결된 스위치에서 보낸 IGMP 쿼리에 응답하지 않는 것을 발견했습니다.

따라서 멀티캐스트 소켓을 열면 멀티캐스트 데이터 수신이 시작되지만 IGMP 구독 시간이 초과되면 중지됩니다. 서버는 IGMP 가입을 갱신하지 않으므로 스위치는 멀티캐스트 스트림을 차단합니다.

(문제가 내 코드에서 발생하지 않는지 확인하기 위해 다음을 사용하고 있습니다.smcroute멀티캐스트 구독을 켜십시오. )

다음은 내 서버 인터페이스의 IGMP 트래픽 스크린샷입니다.

http://img521.imageshack.us/img521/9953/capture10y.png

보시다시피, 내 서버는 먼저 2개의 IGMP 조인을 전송하지만 몇 분 후 스위치가 IGMP 그룹 멤버십 쿼리를 전송하면 커널이 응답하지 않습니다.

영향을 받는 인터페이스의 IGMP 프로토콜 세트 버전은 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

rp_filter이 인터페이스에서는 비활성화되었습니다.

[root@localhost ~]# cat /proc/sys/net/ipv4/conf/eth1.371/rp_filter 
0

답변1

동일한 증상이 나타납니다. 커널은 분명히 무시합니다.IGMP 그룹 멤버십 쿼리슬레이브 라우터 - CentOS 5 서버에 있습니다. 문제를 "기본적으로 거부" 방화벽 구성에 두었습니다.

여러분은 아마도 나처럼 방화벽을 구현할 때 IGMP에 대해 생각해 본 적이 없을 것입니다. CentOS system-config-firewall도구는 IGMP 패킷에 대한 방화벽의 응답을 구성하는 방법을 제공하는 것은 물론 IGMP에 대해서도 묻지 않습니다.

문제는 명시적으로 허용되지 않은 모든 것을 거부하도록 방화벽을 구성하면 방화벽이 LAN 게이트웨이 라우터 및/또는 LAN 게이트웨이 라우터 및/또는 트래픽을 차단한다는 것입니다.IGMP 인식 스위치. 커널은 이러한 패킷을 보기 위해 방화벽을 우회할 수 없으므로, 방화벽을 통과시키지 않으면 응답하지 않습니다. 따라서 잠시 후 스위치/라우터는 네트워크 회선의 어느 누구도 이 멀티캐스트 스트림을 듣고 있지 않다고 판단하여 해당 회선으로의 전달을 중지합니다.

/etc/sysconfig/iptables이 문제를 해결하려면 파일 중간, 상단의 정의와 REJECT하단의 규칙 사이에 다음 줄을 추가해야 합니다 .

-A INPUT -p igmp -j ACCEPT

이는 모든 IGMP 패킷이 제한 없이 허용됨을 의미합니다.

service iptables restart새로운 규칙을 적용하는 것에 대해 이야기하십시오 .

내 솔루션이 작동하는지 테스트하는 빠른 방법은 service iptables stopIGMP가 갑자기 제대로 작동하기 시작하는지 말하고 확인하는 것입니다. 분명히 이 작업은 일시적으로 방화벽을 제거해도 심각한 보안 위험이 발생하지 않는 평화로운 네트워크에서만 수행할 수 있습니다.

관련 정보