树莓派只能在家里玩?当然不是,如何在外网访问家里的树莓派呢?
折腾树莓派,安装了宝塔,有了基本的 web 环境;安装了 homeassistant,没有小米mesh蓝牙网关设备也能在线看到小米温湿度数值;安装了 jenkins,但是不能用各种错误;
我想如果不在家也能连上树莓派,有什么方案呢?
需要完成这样一个工作:内网穿透。
参考地址: https://blog.csdn.net/weixin_44845947/article/details/108160292
内网穿透有很多种方法,这里主要说以下三种:
如果家里有公网IP的话,可以用路由器做映射,进而实现内网穿透;
natapp、ngrok等商业化或非商业化内网穿透工具,用的其实是人家的公网IP;
买云主机服务器以获得公网IP
这三种方法有一个共性就是,要想在公网访问到树莓派,必须要有一个公网的IP,而在这三种方法里,最省钱的无疑是第一种,操作也很简单,最多需要做个动态解析。唯一的问题在于,你很可能没有公网IP,那就无法使用第一种方法了。
最终选择 frp 内网穿透
1. 下载并部署Frp
下载
https://github.com/fatedier/frp/releases,找到对应的版本,arm64版本和普通版本,如下图:
部署
分别解压
- 将frpc和frpc.ini两个文件传到树莓派上(我放在了/home/pi/目录下)
- frps和frps.ini两个文件放云主机(我放在了/root/目录下)
2. 配置frpc
1 | [common] |
添加日志目录
1 | cd /home/pi |
启动frpc
1 | ./frpc -c ./frpc.ini |
3. 配置frps
1 | [common] |
添加日志目录
1 | cd /root |
启动frps
1 | ./frps -c ./frps.ini |
注意: privilege_token frps 和 frpc 一致;
4. 端口加入防火墙白名单
以上配置frpc和frps的所有端口都添加入云主机配置的安全组,当然记得在宝塔系统加入端口开放,否则云主机无法和树莓派通信
5. 尝试访问 XXX.XXX.XXX.XXX:7500
输入配置的 dashboard_user,dashboard_pwd;
可以看到
到此,内网已经成功穿透,已经可以远程访问家里的树莓派。
6. 添加开机启动项
以云主机 frps 为例。
创建启动文件
1 | sudo vim /lib/systemd/system/frps.service |
之后添加下面的内容
1 | [Unit] |
wq保存退出,之后就可以使用如下指令:
1 | sudo systemctl start frps.service #开启frps服务 |