將 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)
這裡有一些關於如何配置 Yocto 系統的建議。您必須對每個主題進行更徹底的研究。它們都有優點和缺點,但我建議使用最後一個(NAT)。
- 設置為橋
由於Linux系統是一個AP,因此完全可以將乙太網介面和Wifi介面橋接在一起。具體方法需要正確配置hostapd才能使用網橋。一些指針在這里和那裡。
這次您可能必須配置(在建構時手動或使用 DHCP)相機以使用 192.168.42.1,但 Yocto 系統仍應在 192.168.42.0/24 中具有(其他)IP 地址,因為它仍然需要DHCP 伺服器。
所以它仍然會暴露董事會的雙重性質。可能有一些方法可以使 Yocto 系統保持完全透明並仍然提供 DHCP(從 192.168.42.1 出現),但這樣做會很複雜。
- 設置為路由器
您必須啟用 IP 轉發。
- 攝像頭系統可見
這意味著您必須使用 DHCP 將路由發佈到攝影機,但不能作為預設路由。最終使用者不會因為新的預設路由而失去 Internet 來使用相機。要使用 DHCP 發布特定路由,您需要同時具備以下兩個功能:
- [DHCP 無類別路由選項 121](https://datatracker.ietf.org/doc/html/rfc3442 "動態主機配置協議 (DHCP) 版本 4 的無類靜態路由選項") 這是 RFC Standards Track 選項 - 非標準[Microsoft DHCP 選項 249](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dhcpe/f9c19c79-1c7f-4746-b555-0c0fc523f3f9 "2.2.8 DHCPv4 選項程式碼 249 (0xF9) - Microsoft 無類靜態路由選項") 或較舊的 Windows 系統無法獲得它配置取決於系統中使用的 DHCP 伺服器。[可能是](https://docs.yoctoproject.org/3.3.1/ref-manual/migration-3.2.html#removed-recipes) [Kea](https://www.isc.org/kea/),它沒有對這些選項[的內置支持,但可以處理](https://kb.isc.org/docs/aa-01323)[那裡描述](https://kea.readthedocs.io/en/kea-1.8.0/arm/dhcp4-srv.html#custom-dhcpv4-options)的任意選項(這需要對 RFC 中的選項有很好的理解)。
並且您一定不要忘記為攝影機配置通過 192.168.30.34 的預設路由(手動或 DHCP,不需要上述選項)。
但這樣做可能並不有趣,因為:
- 依賴於復雜的 DHCP 選項和第二個網路,該網路有新的機會與使用者自己的網路設置發生衝突。 - 仍然暴露了董事會中雙重製度的存在
- 或者隱藏在 NAT 後面的攝像頭
通過使用由項目rtsp-linux提供的外部(即:非主流)Linux 核心模組作為ALG(例如,在 Debian 中打包為nat-rtsp-dkms)以及類似於以下的適當 NAT 規則:
nf_nat_rtsp
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 和連接跟踪幫助](https://home.regit.org/netfilter-en/secure-use-of-helpers/)程序,或者在考慮任何安全考慮後簡單地重新啟用“不安全”方法:
sctl -w net.netfilter.nf_conntrack_helper=1
括: 避免複雜的 DHCP 配置並避免暴露板中的第二個系統(事實上有一個) 如果完成雙 NAT,相機甚至不需要預設路由: ` tables -t nat -A POSTROUTING -o eth0 -s 192.168.42.0/24 -j MASQUERADE ` 需要核心模組,因此如果之前在嵌入式系統中未啟用核心模組支持。 應驗證模組的RTSP兼容性