在同一设备内将 rtsp 视频流从以太网重定向到 WiFi 网络

在同一设备内将 rtsp 视频流从以太网重定向到 WiFi 网络

我有一个嵌入式板,带有基于 yocto 的最小 Linux,没有 GUI。它具有已启动并运行的以太网和 WiFi 接口。

现在,我已将 Axis F44 (192.168.30.35) 摄像头连接到我的以太网端口 ( 192.168.30.34)。我的 WiFi 接口uap0具有 AP 模式静态 IP: ,192.168.42.1当我将任何设备连接到 WiFi 作为站时,该设备接收 IP: 192.168.42.25。下图描述了网络详细信息。

网络详情

现在,为了从移动设备应用程序播放摄像机的 RTSP 流,我不确定应该在板上做哪些网络更改,以便移动设备(192.168.42.25)可以开始 ping 摄像机(192.168.30.35)反之亦然。

谁能建议如何实现目标?或者需要什么网络配置(桥接或IP转发)?

设备上的接口:

eth0      Link encap:Ethernet  HWaddr E2:5D:60:CB:29:99  
          inet addr:192.168.30.34  Bcast:192.168.30.255  Mask:255.255.255.0
          inet6 addr: fe80::e05d:60ff:fecb:2999%lo/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24 errors:0 dropped:0 overruns:0 frame:0
          TX packets:209 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2030 (1.9 KiB)  TX bytes:17571 (17.1 KiB)


uap0      Link encap:Ethernet  HWaddr D4:CA:6E:5E:4E:01  
          inet addr:192.168.42.1  Bcast:192.168.42.255  Mask:255.255.255.0
          inet6 addr: fe80::d6ca:6eff:fe5e:4e01%lo/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2617 errors:0 dropped:0 overruns:0 frame:0
          TX packets:78 errors:18 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:180796 (176.5 KiB)  TX bytes:4590 (4.4 KiB)

答案1

以下是有关如何配置 Yocto 系统的一些建议。您必须对每个主题进行更彻底的研究。它们都有优点和缺点,但我建议使用最后一种(NAT)。

  • 设置为桥

    由于Linux系统是一个AP,所以完全可以将以太网接口和Wifi接口桥接在一起。具体方法需要配置主机正确使用桥梁。一些提示这里那里

    这次您可能必须配置(在构建时手动或使用 DHCP)相机使用 192.168.42.1,但 Yocto 系统应该仍然有 192.168.42.0/24 中的(其他)IP 地址,因为它仍然需要DHCP 服务器。

    所以它仍然会暴露董事会的双重性质。可能有一些方法可以使 Yocto 系统完全透明并仍然提供 DHCP(从 192.168.42.1 开始出现),但这会很复杂。

  • 设置为路由器

    您必须启用 IP 转发。

    • 摄像系统可见

      这意味着您必须使用 DHCP 发布到摄像机的路由,但不能作为默认路由。最终用户不会因为新的默认路由而失去互联网来使用相机。要使用 DHCP 发布特定路由,您同时需要这两个功能:

      配置取决于系统中使用的 DHCP 服务器。它是大概 基亚, 哪个没有内置支持对于这些选项,但可以处理任何任意选项那里描述的(这需要很好地理解 RFC 中的选项)。

      并且您一定不要忘记为摄像机配置通过 192.168.30.34 的默认路由(手动或 DHCP,不需要上述选项)。

      但这样做可能并不有趣,因为:

      • 依赖于复杂的 DHCP 选项和第二个网络,该网络有可能与用户自己的网络设置发生冲突。
      • 依然暴露了董事会双系统的存在
    • 或者摄像头隐藏在NAT后面

      通过使用作为ALGnf_nat_rtsp项目提供的外部(即:非主流)Linux内核模块rtsp-linux(例如在 Debian 中打包为nat-rtsp-dkms)沿着适当的 NAT 规则类似于:

      iptables -t nat -A PREROUTING -i uap0 -d 192.168.42.1 -p tcp --dport 554 -j DNAT --to-destination 192.168.30.35
      iptables -t nat -A PREROUTING -i uap0 -d 192.168.42.1 -p udp --dport 554 -j DNAT --to-destination 192.168.30.35
      

      以及足够的辅助模块配置,如本博客所述:安全使用 iptables 和连接跟踪助手,或者在考虑任何安全考虑后简单地重新启用“不安全”方法:

      sysctl -w net.netfilter.nf_conntrack_helper=1
      

      概括:

      • 避免复杂的 DHCP 配置并避免暴露板上的第二个系统(事实)

      • 如果完成双 NAT,相机甚至不需要默认路由:

        iptables -t nat -A POSTROUTING -o eth0 -s 192.168.42.0/24 -j MASQUERADE
        
      • 需要内核模块,因此如果之前在嵌入式系统中未启用内核模块,则需要支持内核模块。

      • 应验证模块的 RTSP 兼容性

答案2

我建议在您的单板计算机上启用 IP 转发。放:

net.ipv4.ip_forward=1

/etc/sysctl.conf运行sudo sysctl -p。我不确定这在 yocto 中是如何工作的。

然后,您需要确保流量通过 yocto 计算机从您的计算机路由到相机。这取决于您计算机上其他网络接口的配置方式。一般来说,它应该是这样的:

ip route add 192.168.30.0/24 via 192.168.42.1 dev wlp2s0

我对RTSP不太熟悉,但我相信应该足够了。

相关内容