Kết xuất luồng UDP đa hướng với socat


7

Tôi đang thiết lập truyền phát video.

Trong mạng cục bộ, có hai thiết bị truyền phát video qua phát đa hướng UDP. Một là máy tính thông thường có Linux (phát trực tuyến tới 239.220.221.10, cổng 9200), thứ hai là bộ truyền phát DVB-S đặc biệt (phát trực tuyến đến 239.220.220.32, cổng 9200). Có một số hộp set-top IPTV trong mạng, có thể phát các luồng từ một trong hai nguồn. Ngoài ra còn có một số thiết bị chuyển mạch của Cisco để lọc phát đa hướng, nhưng tôi không thể kiểm tra cấu hình của chúng.

Trên các máy tính khác nhau (chạy Ubuntu 12.04) tôi muốn chụp luồng, tốt nhất là sử dụng VLC hoặc FFMPEG. Từ bộ truyền phát máy tính (239.220.221.10), nó hoạt động, nhưng từ bộ truyền phát đặc biệt (239.220.220.32) tôi không nhận được luồng nào.

Những gì tôi đã cố gắng

Tôi đã cố gắng thu hẹp vấn đề và cố gắng thu thập các datagram UDP thô bằng socat và tcpdump. Nếu tôi chạy lệnh sau, tôi sẽ nhận được video hợp lệ trong tệp video.dump:

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

Khi tôi đồng thời chạy tcpdump, tôi thấy các datagram đến:

> 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
...

Khi tôi cố chạy các lệnh tương tự cho bộ truyền phát đặc biệt (chỉ cần thay đổi địa chỉ thành viên IP cho socat thành 239.220.220.32), tcpdump hiển thị các datagram đến từ 239.220.220.32, nhưng tệp video.dump trống.

Điều gì có thể là lý do mà socatkhông thấy các datagram rõ ràng đang đến?

Cập nhật ngày 4 tháng 3 năm 2014:

Tôi chỉ phát hiện ra rằng có các dải IP khác nhau trong mạng:

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

Khi tôi thay đổi địa chỉ IP cuối cùng thành 192.168,85.x / 255.255.255.0, tôi có thể bắt các luồng từ bộ truyền phát "Đặc biệt", nhưng không phải từ bộ truyền phát máy tính.

Vì vậy, câu hỏi thay đổi thành: có thể đặt socat, VLC hoặc FFMPEG để chấp nhận các luồng phát đa hướng có địa chỉ nguồn nằm ngoài phạm vi của giao diện Ethernet không?


Các gói được gửi đến nhóm multicast 239.220.221.10 nhưng bạn đang bảo socattham gia nhóm 239.220.220.10 . Đây có phải là vấn đề không?
scai

@scai Tôi đã mắc một số lỗi khi sao chép địa chỉ từ thiết bị đầu cuối, xin lỗi về điều đó. Bây giờ câu hỏi chứa địa chỉ chính xác.
Milan Fabian

Câu trả lời:


1

tcpdump được gọi mà không có -p chuyển một NIC sang chế độ lăng nhăng - rõ ràng một số bộ lọc cấp cao hơn sẽ kích hoạt, ngăn không cho socat nhận lưu lượng.

Một trong những nghi phạm "thường có tội" là rp_filter - bạn có tuyến đường nào cho cả hai mạng nguồn thông qua eth1 không? Tôi đoán bạn có thể có gw mặc định thông qua eth0. Thêm tuyến đường bị thiếu hoặc vô hiệu hóa rp_filter trên giao diện eth1.

Trong trường hợp OP:

ip r a 192.168.85.0/24 dev eth1

hoặc là

sysctl -w net.ipv4.conf.eth1.rp_filter=0

Vâng, vấn đề là trong tuyến đường bị mất, tôi chỉ quên cập nhật câu hỏi. Cảm ơn bạn.
Milan Fabian
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.