趣小组
[ MAKE ]
首页
节点
分享
创造
问与答
二手交易
编程
电子
树莓派
Arduino
手工
小玩意
ACG 二次元
科学
文化
电影
宠物
旅行
技术支持
登录
注册
首页
创造
穿透局域网,用网页远程登录自己的树莓派
concefly
40cm
•
2021-04-25
•
2043 次点击
•
1 人收藏
•
1 人感谢
## 太长不看版 IOT 设备处于远在千里之外的 **内网环境**,不想去现场调试,用自己设计的内网穿透系统在家躺平 **远程外网登录** 运维。 做出来的系统长这样: - 基于网页的后台系统,可以看到在线设备列表: ![](https://tech.biko.pub/gw/assets/20210425220443.png) - 选一个在线设备,连接终端进行操作: ![](https://tech.biko.pub/gw/assets/20210425220524.png) **待我再完善下,可以将此系统开放出来给大家用。我后续也会分阶段给大家介绍这个内网穿透系统的实现原理。** ## 正文 在我之前一篇介绍“内网穿透”的文章里,介绍了不少可以实现外网登录内网环境树莓派的方案。 > @see [树莓派内网穿透方法大全](https://tech.biko.pub/post#/rpi-nat-traverse) 就自己个人来说,用 ngrok 比较多,但它的免费版只提供随机公网域名和一条在线通道。只要机器一重启,公网域名就换了,非常不方便。而需要重启树莓派的情况实在太常见不过了:拔插头、换卡、换系统、死机重来... 打钱给 ngrok 升级?最便宜也要一个月 5 刀,那当然更是不可能的。 ![](https://tech.biko.pub/gw/assets/20210425203554.png) --- 说完个人情况,再来聊聊工作上的一些事。 我用了一些树莓派来做边缘计算基站。边缘计算嘛,当然要离用户越近越好,但这也意味着基站离我十万八千里。而且基站都处于局域网环境,只能在现场调试安装,外网环境是无法穿透到内网去远程管理基站的。 在没有完备的 IOT 设备接入管理平台之前,基站出了问题,就得肉身到现场调试。这是非常累人的。怎么办,设备接入管理平台也是个大课题,不是今天说要明天就有的。 **于是我萌生了一些想法,旨在减少肉身移动的次数,最好在家躺平就能解决十万八千里之外的基站的问题。** --- 回到内网穿透这个话题。如果有一种内网穿透方案,能安全地、稳定地、方便地管理自己名下的设备,即可部署在基站的内网环境,实现外网穿透管理。 于是我考察了一些比较常见的内网穿透方案: - 路由器端口映射:安全性不足、无法保证公网 IP 稳定。**否决**。 - 花生壳:商业软件,批量部署钱包要完。**否决**。 - ssh 反向隧道:方案过于简陋,要达到较好的稳定性和可维护性还需要做太多工作。**否决**。 - ngrok:和花生壳一样的问题,批量部署钱包要完。**否决**。 - ngrok 开源版:太懒不想看代码,凭第六感认为不行。**否决**。 - frp:开源方案,功能和性能都很好,但设备接入鉴权粒度比较粗,不同用户名下的设备无法隔离。**待定**。 考察下来,只有 frp 稍微合适一点,但由于“设备接入鉴权粒度比较粗”的问题,距离我心目中理想的样子还差一点。要 fork 下来魔改么?有点懒,不想去研究 frp 源码。 那怎么办?**当然是自己设计一个内网穿透系统!** ![](https://tech.biko.pub/gw/assets/20210425215216.png) 这是一个反向代理模式的内网穿透系统。内网设备主动连接通道服务器,并保持连接。外网客户端登录通道服务器后,即可选择一条内网连接进行数据交换,于是便完成了内网穿透。 通道服务器充当了信使的角色:内网设备把数据提交到服务器,由服务器转交外网客户端;外网客户端也把数据提交到服务器,由服务器转交内网设备。 --- 按照上面的思路,我花了点时间实现了第一版内网穿透系统。 - 安装在内网设备上的代理客户端 `pt-agent`: ![](https://tech.biko.pub/gw/assets/20210425221453.png) - 基于网页的后台系统,可以看到在线设备列表: ![](https://tech.biko.pub/gw/assets/20210425220443.png) > 是的,除了树莓派,还兼容 Linux 和 Darwin(mac) 系统。 - 选一个在线设备,连接终端: ![](https://tech.biko.pub/gw/assets/20210425220524.png) > 这是个全功能终端,可完整响应 `F1~12`、`ctrl-c`、`ctrl-d` 等快捷键。 **待我再完善下,可以将此系统开放出来给大家用。我后续也会分阶段给大家介绍这个内网穿透系统的实现原理。**
## 太长不看版
IOT 设备处于远在千里之外的 **内网环境**,不想去现场调试,用自己设计的内网穿透系统在家躺平 **远程外网登录** 运维。
做出来的系统长这样:
- 基于网页的后台系统,可以看到在线设备列表:
![](https://tech.biko.pub/gw/assets/20210425220443.png)
- 选一个在线设备,连接终端进行操作:
![](https://tech.biko.pub/gw/assets/20210425220524.png)
**待我再完善下,可以将此系统开放出来给大家用。我后续也会分阶段给大家介绍这个内网穿透系统的实现原理。**
## 正文
在我之前一篇介绍“内网穿透”的文章里,介绍了不少可以实现外网登录内网环境树莓派的方案。
> @see [树莓派内网穿透方法大全](https://tech.biko.pub/post#/rpi-nat-traverse)
就自己个人来说,用 ngrok 比较多,但它的免费版只提供随机公网域名和一条在线通道。只要机器一重启,公网域名就换了,非常不方便。而需要重启树莓派的情况实在太常见不过了:拔插头、换卡、换系统、死机重来...
打钱给 ngrok 升级?最便宜也要一个月 5 刀,那当然更是不可能的。
![](https://tech.biko.pub/gw/assets/20210425203554.png)
---
说完个人情况,再来聊聊工作上的一些事。
我用了一些树莓派来做边缘计算基站。边缘计算嘛,当然要离用户越近越好,但这也意味着基站离我十万八千里。而且基站都处于局域网环境,只能在现场调试安装,外网环境是无法穿透到内网去远程管理基站的。
在没有完备的 IOT 设备接入管理平台之前,基站出了问题,就得肉身到现场调试。这是非常累人的。怎么办,设备接入管理平台也是个大课题,不是今天说要明天就有的。
**于是我萌生了一些想法,旨在减少肉身移动的次数,最好在家躺平就能解决十万八千里之外的基站的问题。**
---
回到内网穿透这个话题。如果有一种内网穿透方案,能安全地、稳定地、方便地管理自己名下的设备,即可部署在基站的内网环境,实现外网穿透管理。
于是我考察了一些比较常见的内网穿透方案:
- 路由器端口映射:安全性不足、无法保证公网 IP 稳定。**否决**。
- 花生壳:商业软件,批量部署钱包要完。**否决**。
- ssh 反向隧道:方案过于简陋,要达到较好的稳定性和可维护性还需要做太多工作。**否决**。
- ngrok:和花生壳一样的问题,批量部署钱包要完。**否决**。
- ngrok 开源版:太懒不想看代码,凭第六感认为不行。**否决**。
- frp:开源方案,功能和性能都很好,但设备接入鉴权粒度比较粗,不同用户名下的设备无法隔离。**待定**。
考察下来,只有 frp 稍微合适一点,但由于“设备接入鉴权粒度比较粗”的问题,距离我心目中理想的样子还差一点。要 fork 下来魔改么?有点懒,不想去研究 frp 源码。
那怎么办?**当然是自己设计一个内网穿透系统!**
![](https://tech.biko.pub/gw/assets/20210425215216.png)
这是一个反向代理模式的内网穿透系统。内网设备主动连接通道服务器,并保持连接。外网客户端登录通道服务器后,即可选择一条内网连接进行数据交换,于是便完成了内网穿透。
通道服务器充当了信使的角色:内网设备把数据提交到服务器,由服务器转交外网客户端;外网客户端也把数据提交到服务器,由服务器转交内网设备。
---
按照上面的思路,我花了点时间实现了第一版内网穿透系统。
- 安装在内网设备上的代理客户端 `pt-agent`:
![](https://tech.biko.pub/gw/assets/20210425221453.png)
- 基于网页的后台系统,可以看到在线设备列表:
![](https://tech.biko.pub/gw/assets/20210425220443.png)
> 是的,除了树莓派,还兼容 Linux 和 Darwin(mac) 系统。
- 选一个在线设备,连接终端:
![](https://tech.biko.pub/gw/assets/20210425220524.png)
> 这是个全功能终端,可完整响应 `F1~12`、`ctrl-c`、`ctrl-d` 等快捷键。
**待我再完善下,可以将此系统开放出来给大家用。我后续也会分阶段给大家介绍这个内网穿透系统的实现原理。**
收藏
♥ 感谢
Tony
218.8m
2021-04-26
可以用 tmate 共享终端。直接穿透 ssh,可以通过浏览器访问,完全免费。
https://tmate.io/
一键安装:
curl -fsSL
git.io/tmate.sh
| bash
类似的还有
https://upterm.dev/
https://tty-share.com/
https://shellshare.net/
都是开源免费的,提供 ssh 穿透服务,无需自购 VPS。
hanguofu
10cm
2021-04-26
请问如果我想访问家里的移动硬盘上的文件,是不是只能自己部署一台公网服务器做流量转发了 ?
沐风MWind
63.05m
2021-04-26
秀啊
沐风MWind
63.05m
2021-04-26
@hanguofu 自己找公网服务器可以,还可以找其他厂商的内网穿透服务
concefly
40cm
2021-04-26
@hanguofu 网盘类应用带宽要求高,最好用p2p模式内网穿透,流量不走服务端转发。例如 frp
FALLLLL
2021-12-30
内网穿透的话,强烈推荐树莓盘,还不限速,树莓派刷个系统就可以用了,链接拿去不用谢~
https://www.shumeipan.com/
店长大人
8.5m
2021-12-30
选群辉
登录
或
注册
后可回复。
›
MAKE 趣无尽
›
创客百宝箱