Networking

將 rtsp 影片流從乙太網重定向到同一設備內的 WiFi 網路

  • June 30, 2021

我有一個嵌入式板,帶有基於 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兼容性

引用自:https://unix.stackexchange.com/questions/656117