Kích hoạt RTSP trong iptables


7

Tôi muốn nhận luồng RTSP qua VLC, nhưng khi tôi cố chạy

sudo -u non_root_user cvlc -vvv -I dummy rtsp://ip:port/x.sdp 

Tôi có:

Unable to determine our source address: This computer has an invalid IP    address: 0x0

Tôi nghĩ rằng các cổng có thể bị đóng, vì khi tôi tắt tường lửa, tôi có thể nhận được luồng. Tôi muốn hỏi bạn cách đặt iptables để tôi có thể nhận RTSP. Cảm ơn.

Câu trả lời:


6

Bạn đã gặp phải một vụ hack xấu xí trong Live555 , thư viện VLC sử dụng để cung cấp tính năng máy khách RTSP. (Mã máy chủ RTSP của VLC là dành riêng cho VLC.) Hack cố gắng tìm ra IP nào mà máy của bạn dường như sử dụng trên mạng LAN. (Xấu xí như hack, tôi không biết cách nào tốt hơn để Live555 làm điều này.)

Bạn phải mở cổng UDP 15947 trong tường lửa của mình để khắc phục lỗi mà bạn gặp phải. Đó là "cổng thử nghiệm" Live555 sử dụng cho bản hack này.

Làm xong việc đó, bạn cũng có thể phải mở các cổng bổ sung để nhận luồng của mình, tùy thuộc vào cách tường lửa của bạn hoạt động. RTSP chỉ là giao thức điều khiển luồng , không phải là giao thức phân phối luồng . Hãy nghĩ về RTSP là "các nút VCR" cho giao thức phân phối luồng thực tế: phát, dừng, tạm dừng, FF, tua lại .... Máy khách RTSP đàm phán các cổng phân phối luồng với máy chủ như một phần của hành động "phát".

Kết quả cuối cùng là máy khách (VLC trong trường hợp này) sẽ yêu cầu máy chủ gửi phương tiện đến nó trên một cổng cụ thể trong SETUPlệnh RTSP :

SETUP rtsp://192.168.0.1:8554/42.ts/track1 RTSP/1.0
CSeq: 4
User-Agent: LibVLC/2.0.2 (LIVE555 Streaming Media v2011.12.23)
Transport: RTP/AVP;unicast;client_port=60860-60861

Đó là, VLC đang nói với máy chủ RTSP rằng nó muốn phương tiện được phân phối trên các cổng 60860 và 60861 thông qua RTP. Khách hàng chọn các cổng đó một cách ngẫu nhiên. Nếu tường lửa của bạn chặn chúng, nó sẽ chặn phân phối luồng mặc dù đàm phán RTSP đã thành công.

Trong trường hợp tốt nhất, tường lửa của bạn sẽ không chặn các cổng cao như vậy hoặc nó sẽ có một số tính năng kiểm tra trạng thái cho phép nó bỏ chặn chúng khi thấy cuộc đàm phán RTSP này.

Nếu tường lửa của bạn chặn nó, bạn có thể gỡ lỗi bằng Wireshark . Nó hiểu giao thức RTSP. Nhấp chuột phải vào một gói trong luồng RTSP và nói "Theo dõi luồng TCP". Trong cửa sổ bật lên, tìm SETUPlệnh RTSP . Sau đó bắt đầu lại Wireshark, lần này tìm kiếm lưu lượng UDP trên các cổng đó. (Tất cả điều này trong khi ứng dụng khách RTSP tiếp tục tải xuống luồng hoặc cố gắng.)


Tôi đã giải quyết nó bằng cách kích hoạt cổng 15947 như bạn đã nêu, cảm ơn vì đã trả lời tốt.
DropDropping
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.