我有一个嵌入式板,带有基于 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 发布特定路由,您同时需要这两个功能:
-
这就是 RFC 标准跟踪选项
非标准的微软 DHCP 选项 249
或者较旧的 Windows 系统无法获取它
配置取决于系统中使用的 DHCP 服务器。它是大概 基亚, 哪个没有内置支持对于这些选项,但可以处理任何任意选项那里描述的(这需要很好地理解 RFC 中的选项)。
并且您一定不要忘记为摄像机配置通过 192.168.30.34 的默认路由(手动或 DHCP,不需要上述选项)。
但这样做可能并不有趣,因为:
- 依赖于复杂的 DHCP 选项和第二个网络,该网络有可能与用户自己的网络设置发生冲突。
- 依然暴露了董事会双系统的存在
-
或者摄像头隐藏在NAT后面
通过使用作为ALG
nf_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不太熟悉,但我相信应该足够了。