【樹莓派-網絡監控(6)遠程訪問】基於內網穿透實現樹莓派監控的公網遠程訪問與遙控


前期內容提要:


在前面章節中,我們實現了數據的前後端交互,完成了局域網環境下網絡攝像頭的搭建與調試工作。但僅僅一個支持局域網內訪問的“網絡”攝像頭,遠遠不足以成爲一個真正意義上的網絡攝像頭,也沒有達到工程實用性之目的,作爲該系列的完結篇,我們將利用內網穿透技術,實現監控的公網遠程訪問與遙控,打造一個真正意義上的網絡攝像頭,爲工程畫上一個圓滿的句號。
在這裏插入圖片描述
基本思路:

選用Frp對內網監控進行穿透,穿透對象分別爲監控的控制頁面(穿透後地址:[web])以及控制頁面中iframe標籤內的攝像頭實時監控畫面(穿透後地址:[web2]),這兩者是需要分別操作的,在穿透過程中不可混爲一談。最後將index.html文件中iframe標籤內的鏈接更改爲 [web2],通過訪問 [web] 實現網絡監控的外網訪問。


一、Frp配置

關於Frp原理及其更多使用方法、應用場景,詳見博主專欄: 點此前往

Frps:

sudo apt-get update

wget https://github.com/fatedier/frp/releases/download/v0.17.0/frp_0.17.0_linux_amd64.tar.gz

tar -zxvf frp_0.17.0_linux_amd64.tar.gz

cd frp_0.17.0_linux_amd64

sudo vim ./frps.ini

添加以下內容:
[common]
bind_addr = 0.0.0.0 
bind_port = 7000
vhost_http_port = 8080
#放行端口
iptables -I INPUT -i eth0 -p tcp --dport 7000 -j ACCEPT
iptables  -I OUTPUT -o eth0 -p tcp --sport 7000 -j ACCEPT
iptables -I INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
iptables  -I OUTPUT -o eth0 -p tcp --sport 8080 -j ACCEPT

#後臺保持啓動 需要在frp_0.17.0_linux_amd64目錄下操作
nohup ./frps -c ./frps.ini &

Frpc:

sudo apt-get update

wget https://github.com/fatedier/frp/releases/download/v0.17.0/frp_0.17.0_linux_arm.tar.gz

tar -zxvf frp_0.17.0_linux_arm.tar.gz

cd frp_0.17.0_linux_arm

sudo vim ./frpc.ini

[web]穿透控制檯,[web2]穿透監控畫面,[ssh]作爲可選項,用於發生穿透故障時檢測連接是否暢通(remote_port也需要在服務器端放行)。

[common]
server_addr = your_server_ip
server_port = 7000

[web]  
type = http  
local_ip = 127.0.0.1  
local_port = 80 
custom_domains = p.***.com 
 
[web2]  
type = http  
local_ip = 127.0.0.1  
local_port = 8080  
custom_domains = c.***.com

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 21
remote_port =6000
# 在frp_0.17.0_linux_arm目錄下,測試:
./frpc -c ./frpc.ini

二、index.html配置

index.html文件中iframe標籤內的局域網監控畫面鏈接更改爲穿透後的鏈接。c.***.com

在這裏插入圖片描述

<style type="text/css">
	.warpper { overflow-x: auto;overflow-y:hidden; -webkit-overflow-scrolling: touch; width: 100%; height: 300px; margin: 2px auto; border: 0.1px solid black; }
</style>

<div class="warpper">
	<iframe  src="http://c.***.com:8080/stream_simple.html" style="height:500px;width:100%;" scrolling="yes" frameborder="0"></iframe>
</div>

由於測試環境僅50M帶寬,故在用穿透地址替換iframe標籤內網監控畫面鏈接的同時,將iframe外的div大小由原來的width: 100%; height: 505px變更爲了width: 100%; height: 300px以保證內網穿透環境下遠程訪問畫面傳輸的連續性與穩定性(與之配套也需要調整mjpg-stream參數,詳細操作方法 點此查看)。(最終大小可以根據家庭實際網絡情況測試後確定


三、域名解析

在這裏插入圖片描述


四、訪問測試

(1) 將內網穿透服務設置爲開機自動啓動

在全部工程中,一共有三處(攝像頭監控控制頁面以及內網穿透)涉及開機自啓的設置,爲保證後期維護的便捷性,統一選用systemctl方法,實現需求。

sudo vim /etc/systemd/system/frpc.service
[Unit]
Description=frpc daemon
After=syslog.target  network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/home/pi/frp_0.17.0_linux_arm/frpc -c /home/pi/frp_0.17.0_linux_arm/frpc.ini
Restart= always
RestartSec=1min

[Install]
WantedBy=multi-user.target
#啓動frpc
su
systemctl daemon-reload
systemctl start frpc

#查看是否成功開啓
systemctl status frpc.service

#設置爲開機啓動
systemctl enable frpc

在這裏插入圖片描述

(2)外網環境下可以通過訪問 http://p.***.com:8080的方式登陸網絡監控

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述


工程需求 工期 完成情況(達成\未達成)
基於樹莓派搭建可視化可遠程遙控網絡監控 六章節 達成
#工程後期維護、故障測試常用命令:

#攝像頭:
cd /home/pi/mjpg-streamer-master/mjpg-streamer-experimental/
./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"
nohup ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www" &

#內網穿透
cd frp_0.17.0_linux_arm/
nohup ./frpc -c ./frpc.ini &

#控制頁面
cd 111/
nohup sudo python3 index.py &

至此,我們通過內網穿透技術,實現了樹莓派監控的公網遠程訪問與遙控,完成了公網環境下網絡攝像頭的全部搭建與部署工作。真正意義上打造了一臺完全屬於自己控制的網絡監控,達到了工程的預期目標和效果!


舉一反三:拓展開發示例——打造一個遠程可視化空調遙控器:

在這裏插入圖片描述
基本思路:

通過加裝紅外管,或者直接外接紅外編程模塊,“克隆”空調遙控器發射出的紅外信號,在需要時依樣畫葫蘆地把這個信號發射出去,實現空調的遠程啓動。


如果您有任何疑問或者好的建議,期待你的留言與評論!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章