基于树莓派的远程实时监控(内网穿透)
/*本文系湛江市第十七中学星火创客团队及岭南师范学院物联网俱乐部原创部分参赛项目,转载请保留声明 */
一、项目背景与目标:
此项目基于一个师弟的留言:如何实现在学校的校园网(办公网)内实现内网穿透。我在已经解决师弟所提出的难题以后,将这个技术知识点应用起来,用树莓派搭建一个简易的监控平台。
当前我们在市面上购买网络监控设备,往往会配备相关的App、Web端等相关的移动应用。但是,前通过Shodan搜索实现网络摄像头入侵、字典破解用户操作平台密码甚至是直接入侵监控制造商服务器等等方式爆破网络摄像头的事例已比比皆是。因此,搭建一台属于我们自己控制的网络监控就显得其存在的合理性和必要性了。
注:此次时间紧迫,视频监控和安全这块还没时间做得很完善,等面试完以后,有时间会做一个工程项目来教大家。
二、工程搭建
2.1 硬件准备
①树莓派摄像头模组Raspberry PI csi接口
②树莓派4B/3B+
2.2树莓派系统烧写
①系统烧写方法
2.3 工程搭建(局域网)
①开启摄像头接口
如果你之前已经使用过摄像头接口,直接看跳到下一步。如果还没有的用过的话,树莓派摄像头接口可能还没有打开,这是树莓派打开摄像头接口的方法:
(i)打开树莓派终端输入:
sudo raspi-config
(ii) 选中Interfacing Options按Enter键进入子菜单
(iii) 选中Camera,按Enter键,打开摄像头接口,确认打开后即可
②接入摄像头
给树莓派接上摄像头很容易。确保树莓派已经关机的情况下,用指甲轻轻抠开CSI接口卡扣,将有金属接触面的一面对准卡扣白色的一面,再按压扣紧卡扣就安装好摄像头了。
③找到树莓派的IP地址
在树莓派终端输入命令 ipconfig,wlan0即为树莓派的ip地址。
④ 下载脚本
Gitee链接地址为:https://gitee.com/qiqicancanqiqi/raspberry-pie/tree/master/Video_surveillance
⑤ 代码执行(python3自己安装)
python3 ~/rpi/rpi.python
此时监控系统以及开始工作了。局域网内的任何设备,打开浏览器地址栏输入 ip:端口,(冒号前的IP地址换成你自己树莓派的ip)即可打开网络监控系统。视频响应的延时取决于你的树莓派和路由器的性能,保持程序运行,下面将教大家如何通过外网访问用树莓派做的内网视频监控。
2.4 内网穿透
2.4.1服务器端配置(腾讯云+宝塔)
①寻找合适的frp版本,服务器为X64位
②使用tar指令解压tar.gz文件
tar -zxvf frp_0.36.2_linux_amd64.tar.gz
③使用cd指令进入解压出来的文件夹
cd frp/frp_0.36.2_linux_amd64/
④外网主机作为服务端,可以删掉不必要的客户端文件,使用rm指令删除文件。
rm -f frpc
rm -f frpc.ini
⑤接下来要修改服务器配置文件,即frps.ini文件。使用vim指令对目标文件进行编辑。
vim frps.ini
[common]
bind_port = 7000
vhost_http_port = 8000
[common]部分是必须有的配置,其中bind_port是自己设定的frp服务端端口,vhost_http_port是自己设定的http访问端口。
保存上面的配置后,使用以下指令启动frp服务端。(如果需要在后台运行,请往下翻阅关于后台运行的部分。)
./frps -c ./frps.ini
⑥使用systemctl来控制启动
这个方法比较好用,很方便
sudo vim /lib/systemd/system/frps.service
在frps.service里写入以下内容
[Unit]
Description=frps service
After=network.target syslog.target
Wants=network.target[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/your/path/frps -c /your/path/frps.ini[Install]
WantedBy=multi-user.target
然后就启动frps
sudo systemctl start frps
再打开自启动
sudo systemctl enable frps
- 如果要重启应用,可以这样,
sudo systemctl restart frps
- 如果要停止应用,可以输入,
sudo systemctl stop frps
- 如果要查看应用的日志,可以输入,
sudo systemctl status frps
⑦放行端口
使用宝塔面板让服务器放行7000,8000的端口
2.4.2客户端配置(树莓派)
①寻找合适的frp版本,树莓派安装32位
②使用tar指令解压tar.gz文件
tar -zxvf frp_0.36.2_linux_amd.tar.gz
③使用cd指令进入解压出来的文件夹
cd frp/frp_0.36.2_linux_amd/
④树莓派作为客户端,可以删掉不必要的客户端文件,使用rm指令删除文件。
rm -f frps
rm -f frps.ini
⑤接下来要修改客户端配置文件,即frp.ini文件。使用vim指令对目标文件进行编辑。
vim frpc.ini
[common]
server_addr = love2022.top
server_port = 7000
token = love2022.top[你自己取个名字]
type = tcp
local_ip = 项目的内网ip地址(如local_ip = 127.0.0.1, 比如说要从外网访问宝塔面板,这里就填127.0.0.1,实在不知道填什么就填0.0.0.0)本人是192.168.xx.xx
local_port = 要转发的端口(如local_port = 80 ,宝塔面板填8888)本人是8000remote_port = 外网访问的端口(端口范围是6000-65535 如果报错start error: port already used
就换一个端口 )本人是122.165.xx.xx
⑥保存上面的配置后,使用以下指令启动frp客户端。
./frpc -c ./frpc.ini
2.5 远程视频监控实现
在浏览器输入公网ip+外网端口(请保持上面视频监控的代码运行!!!!)
总结:
客户端自运行的文件还没写,暂时没空了,整个项目先到这吧,有什么问题请给我留言,很久没出过博客了,希望这篇博客能帮助更多的人解决问题,同时希望更多人去爱上物联网这个行业。
基于树莓派的远程实时监控(内网穿透)相关推荐
- 树莓派远程4G遥控车教程(四)-实时监控内网穿透及集成舵机控制功能
树莓派远程4G遥控车教程(四)- 内网穿透及监控页面集成舵机控制功能 树莓派远程4G遥控车教程(一)-准备工作 树莓派远程4G遥控车教程(二)-相机云台舵机初步调试 树莓派远程4G遥控车教程(三)-摄 ...
- 使用VNC远程连接Ubuntu - 内网穿透实现公网远程办公
写在前面:博主是一只经过实战开发历练后投身培训事业的"小山猪",昵称取自动画片<狮子王>中的"彭彭",总是以乐观.积极的心态对待周边的事物.本人的技 ...
- 树莓派摄像头使用 motion + frp内网穿透 实时视频显示
本文主要介绍motion的使用,frp内网穿透步骤. 一.准备材料 二.motion的下载安装 三.motion的使用 四.frp的下载安装 五.frp内网穿透服务器配置步骤 六.frp内网穿透客户端 ...
- 基于邮件系统的远程实时监控系统的实现 Python版
人生苦短,我用Python~ 界内的Python宣传标语,对Python而言,这是种标榜,实际上,Python确实是当下最好用的开发语言之一. 在相继学习了C++/C#/Java之后,接触Python ...
- 实现公网访问树莓派4B(花生壳内网穿透)
下载 花生壳官网下载地址:https://hsk.oray.com/download/ 点击下载树莓派 使用命令安装 wget "https://dl-cdn.oray.com/hsk/li ...
- 基于FRP反向代理工具实现内网穿透攻击
文章目录 前言 FRP反向代理 内网环境搭建 服务端的配置 客户端的配置 FRP内网穿透 FRP进阶使用 fscan内网神器 总结 前言 当我们拿下目标单位的一台外网服务器后,需要借助外网服务器作为跳 ...
- Java支付宝沙箱环境支付,官方Demo远程调试【内网穿透】
文章目录 1. 下载当面付demo 2. 修改配置文件 3. 打包成web服务 4. 局域网测试 5. 内网穿透 6. 测试公网访问 7. 配置二级子域名 8. 测试使用固定二级子域名访问 在沙箱环境 ...
- 搭建我的世界java版服务器,公网远程联机【内网穿透】
文章目录 1. 搭建我的世界服务器 1.1 服务器安装java环境 1.2 配置服务端 2. 测试局域网联机 3. 公网远程联机 3.1 安装cpolar内网穿透 3.1.1 windows系统 3. ...
- Java支付宝沙箱环境支付,SDK接口远程调试【内网穿透】
文章目录 1.测试环境 2.本地配置 3. 内网穿透 3.1 下载安装cpolar内网穿透 3.2 创建隧道 4. 测试公网访问 5. 配置固定二级子域名 5.1 保留一个二级子域名 5.2 配置二级 ...
最新文章
- java存款程序_JAVA实现账户取款和存款操作
- 电脑DIY之内存传输标准
- Python编程基础:第二十三节 嵌套函数调用Nested Functions Calls
- mysql修改字段非必输_mysql有些字段是非必填的,传空要查所有数据该怎么处理?...
- paraView做动画(终极教程)
- (Z)标准电阻值的来历及色环电阻值定义
- Bash脚本教程之脚本入门
- SharePoint项目中新建类库的错误处理及项目建设中遇到的问题总结
- 阿里云发布首款全球智能互联的网络产品——云骨干网
- Golang sync.pool对象池
- 迪士尼前高管凯文·梅耶尔加盟字节跳动,出任COO
- 商汤科技回应“IPO推迟”:“被”IPO,还“被”推迟了
- 罗永浩签约抖音后,带货首秀或将献给小米,你看好这笔生意吗?
- JAVA的节点流和处理流
- Oracle 安装OEM 报错: 无法对所有EM 相关账户解锁 解决方法
- 微信公众平台测试帐号申请及Token验证地址提供
- 大学计算机四级网络工程师考试内容,收藏!计算机四级网络工程师考试内容
- handsome 404页面
- mac vscode插件位置
- 其他算法-建立在流形上的降维UMAP