web-dev-qa-db-ja.com

socatによるマルチキャストUDPストリームのダンプ

ビデオストリーミングを設定しています。

ローカルネットワークには、UDPマルチキャストでビデオをストリーミングする2つのデバイスがあります。 1つはLinuxを搭載した通常のコンピューター(239.220.221.10、ポート9200にストリーミング)、2つ目は特別なDVB-Sストリーマー(239.220.220.32、ポート9200にストリーミング)です。ネットワークにはいくつかのIPTVセットトップボックスがあり、どちらのソースからのストリームも再生できます。マルチキャストフィルタリング用のシスコスイッチもいくつかありますが、それらの設定を確認できません。

別のコンピューター(Ubuntu 12.04を実行)で、できればVLCまたはFFMPEGを使用してストリームをキャプチャしたいと思います。コンピューターストリーマー(239.220.221.10)からは機能しますが、特別なストリーマー(239.220.220.32)からはストリームを取得できません。

私が試したもの

問題を絞り込み、socatとtcpdumpを使用して生のUDPデータグラムをキャプチャしようとしました。次のコマンドを実行すると、video.dumpファイルに有効なビデオが表示されます。

> socat UDP4-RECVFROM:9200,ip-add-membership=239.220.221.10:0.0.0.0 - > video.dump

Tcpdumpを同時に実行すると、着信データグラムが表示されます。

> Sudo tcpdump -i eth1 
18:00:39.059824 IP 10.1.2.202.41852 > 239.220.221.10.9200: UDP, length 1316
18:00:39.060789 IP 10.1.2.202.41852 > 239.220.221.10.9200: UDP, length 1316
...

特別なストリーマーに対して同じコマンドを実行しようとすると(socatのIPメンバーシップアドレスを239.220.220.32に変更するだけ)、tcpdumpは239.220.220.32からの受信データグラムを表示しますが、video.dumpファイルが空です。

socatが明らかに来ているデータグラムを見ない理由は何ですか?

2014年3月4日に更新:

ネットワークにさまざまなIP範囲があることがわかりました。

Computer streamer: 10.1.2.202 / 255.0.0.0
"Special" streamer: 192.168.85.5 / 255.255.255.0
Computer on which I am trying to grab stream: 10.1.2.203 / 255.0.0.0

最後のIPアドレスを192.168.85.x/255.255.255.0に変更すると、「特別な」ストリーマーからのストリームをキャッチできますが、コンピューターのストリーマーからはストリームをキャッチできません。

したがって、質問が次のように変わります。イーサネットインターフェイスの範囲外の送信元アドレスを持つマルチキャストストリームも受け入れるようにsocat、VLC、またはFFMPEGを設定することは可能ですか?

7
Milan Fabian

-pなしで呼び出されたtcpdumpは、NICを無差別モードに切り替えます-明らかに、より高いレベルのフィルタリングが作動し、socatがトラフィックを受信できないようにします。

「通常は有罪」の容疑者の1人はrp_filterです-eth1を介してsourceネットワークの両方にルートがありますか?私はあなたがeth0を介してデフォルトのGWを持っているかもしれないと思います。不足しているルートを追加するか、eth1インターフェースでrp_filterを無効にします。

OPの場合:

ip r a 192.168.85.0/24 dev eth1

または

sysctl -w net.ipv4.conf.eth1.rp_filter=0
1
Tomasz Pala