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について考えたことがないでしょう。 CentOSsystem-config-firewallツールは、IGMPパケットに対するファイアウォールの応答を設定する方法を提供するだけでなく、IGMPについても尋ねません。

問題は、明示的に許可されていないすべてを拒否するようにファイアウォールを構成すると、ファイアウォールがLANゲートウェイルーターおよび/またはLANゲートウェイルーターおよび/またはトラフィックをブロックすることです。IGMP認識スイッチ。カーネルはこれらのパケットを見るためにファイアウォールをバイパスすることはできないので、ファイアウォールを通過しないと応答しません。したがって、しばらくすると、スイッチ/ルーターはネットワーク回線の誰もがこのマルチキャストストリームを聞いていないと判断し、その回線への配信を停止します。

/etc/sysconfig/iptablesこの問題を解決するには、ファイルの中間、上部の定義とREJECT下部の規則の間に次の行を追加する必要があります。

-A INPUT -p igmp -j ACCEPT

これは、すべてのIGMPパケットが制限なく許可されることを意味します。

service iptables restart新しいルールを適用することについて話してください。

私の解決策が動作しているかどうかをテストする簡単な方法は、service iptables stopIGMPが突然正常に動作し始めていることを伝えて確認することです。明らかに、これは一時的にファイアウォールを削除しても重大なセキュリティリスクが発生しない平和なネットワークでのみ実行できます。

関連情報