如何过滤端口不是1935的rtmp流(wireshark)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何过滤端口不是1935的rtmp流(wireshark)相关的知识,希望对你有一定的参考价值。

参考技术A wireshark 利用以下条件进行过滤 rtmp 数据流:

但是 wireshark 默认只能过滤服务器端口为 1935 的 rtmp 流,
比如 rtmp://192.168.2.109:1935/live/192.168.2.22.stream
当端口不是1935时,则无法直接抓到数据包。

通过以上步骤,即可完成对非1935端口的rtmp进行过滤。

如何对客户端隐藏 RTMP 流 url?

【中文标题】如何对客户端隐藏 RTMP 流 url?【英文标题】:How to hide the RTMP stream url from client? 【发布时间】:2017-04-29 14:07:25 【问题描述】:

我有一个由 nginx-rtmp 驱动的自定义 RTMP 服务器。

这是我的配置:

server 
    listen 1935;
    chunk_size 4000;
    ping 10s;
    ping_timeout 5s;

    application live 
        live on;
        wait_key on;
        play_restart on;
    

当主播想要开始直播时,他/她会将内容发布到rtmp://myserver.com/live/someUserDefinedStreamName

当观众想要观看直播时,他/她会从 API 端点获取流 url,这就是问题所在。

someUserDefinedStreamName 字面意思是“公共”,这意味着每个人都可以将内容发布到此 url 以伪装成广播者。

关于这个问题有什么建议可以防止观众知道原始流网址吗?

例如,广播公司向rtmp://myserver.com/live/someUserDefinedStreamName 发布内容,而观众可以通过rtmp://myserver.com/live?someHashString 观看流,但如何?

【问题讨论】:

【参考方案1】:

显然,您可以在配置文件中添加一些回调到 php 脚本,以便在用户发布视频时触发。

使用回调可以检查用户和密码。

I found this article

【讨论】:

【参考方案2】:

您可以使用nginx-rtmp 模块中的选项轻松保护您的 rtmp 资源, 使用on_play 保护资源不被播放(通过检查自定义后端的权限)和on_publish 限制发布用户。

rtmp 

  application appname

      # a url to your custom backend
      on_play http://localhost:9090/check_user;
      # backend server should return 200 for allowing otherwise return 401 or 403
      # you can also return 301 or 302 like redirection for redirecting to 
      # other stream
      on_publish http://localhost:9090/check_publish_perm;
      # same conditions as on_play
  

【讨论】:

【参考方案3】:

这是一个较老的问题,因此发布者可能不再需要答案,但这是我们目前为防止未经授权的发布者访问我们的 rtmp 流而采取的措施。如果您的发布商有动态 IP 地址,这不是最理想的解决方案。

rtmp 
        server 
                listen 1935;
                chunk_size 4096;

                application live 
                        live on;
                        meta copy;
                        hls on;
                        hls_path /mnt/hls/live;
                        hls_fragment 5s;
                        hls_playlist_length 10s;

                allow publish IP_ADDRESS_GOES_HERE;
                deny publish all;
        

允许发布和拒绝发布行将传入源限制为允许中的源并拒绝所有其他源。

目前正在stack上寻找更好的解决方案

【讨论】:

以上是关于如何过滤端口不是1935的rtmp流(wireshark)的主要内容,如果未能解决你的问题,请参考以下文章

RTMP推流方案总结

如何使用nginx播放HLS流?

如何对客户端隐藏 RTMP 流 url?

流媒体系统的RTMP协议

调试libRTMP代码来分析RTMP协议

如何使用 nginx 播放 HLS 流?