Linux Centos7で「socat」を使用していくつかの問題を診断しています。サーバーとクライアントはすべてLinuxcentos7であり、すべて複数のインターフェースを備えています。サーバー10.1.1.1はスイッチ1にあり、10.1.1.2はスイッチ2にあります。スイッチ1とスイッチ2は、Cisco NX-OSを実行する、直接接続されたレイヤ3スイッチです。これは私が説明できない状況です:
sTDINを介してデータを送信するサーバー10.1.1.1(スイッチ1、UDPパケット送信者に接続):
socat STDIO UDP4-DATAGRAM:239.2.2.1:12345
クライアント10.1.1.2(スイッチ2、UDPパケットレシーバーに接続):
socat UDP4-RECVFROM:12345,ip-add-membership=239.2.2.1:10.1.1.2,fork,reuseaddr -
サーバー10.1.1.1と同じマシンで別のレシーバーを起動するまで、クライアントはサーバーのUDPパケットを受信します。
socat UDP4-RECVFROM:12345,ip-add-membership=239.2.2.1:10.1.1.1,fork,reuseaddr -
この2番目のレシーバーを起動すると、10.1.1.2のクライアントはサーバーからのデータの受信を停止します。また、tcpdumpを使用すると、10.1.1.2のそのポートでパケットが受信されていないことがわかります。さらに、それ以降、サーバーとクライアントを再起動しても、10.1.1.2はそのマルチキャストプレフィックス(239.2.2.x)の10.1.1.1からのマルチキャストパケットを受信しなくなります。
これはスイッチルーティングの問題ですか?または、「socat」コマンドラインでいくつかのパラメーターを見逃しましたか?そのインターフェイス(10.1.1.x)でrp_filter = 0であることを確認しました。
編集:より多くのネットワーク設定を含めるために質問を更新します。ルーティングの問題と同じくらい、これに対する疑いがあります。
更新:Layer3スイッチの10.1.1.x VLANでPIMが有効になっていないことがわかりました。これは、マルチキャストルーティングが有効になっていないことを意味します。とはいえ、別のスイッチで初めて10.1.1.2がデータを受信するのはなぜかわかりません。
スイッチのルーティングの問題であることが判明しました。 10.1.1.xのVLANのマルチキャストルーティングはオンになっていません。Ciscoルーターに「pimsparse-mode」を追加すると、すべてが期待どおりに機能します。