基于阿里云ECS配置树莓派frp内网穿透

简介: 基于阿里云ECS配置树莓派frp内网穿透

前言简介

本人目前大三,计算机科学与技术专业,近期对树莓派很感兴趣,也动手实现了基于树莓派搭建树莓派私有云以及K3s的微型集群,其中很大一部分都是基于阿里云的ECS实现完成的,因此在此分享一下基于阿里云ECS搭建树莓派frp内网穿透的经验。

frp背景介绍

SSH和远程桌面都是需要在局域网下通过IP地址进行连接的,而我们配置一台服务器最重要的诉求,应该是可以随时随地去访问服务器。
比如在家里面,网络运营商提供的网络服务通过路由器路由到各个设备,此时路由器会同时具备内网地址(路由器之内,局域网,LAN,也就是192.168.x.x)和外网地址(路由器之外,互联网,WAN)。但是其实这个WAN口的IP并不是真正的“公网IP”,而是经过了多层的NAT转换之后的地址,外网的设备是不能通过这个地址访问到路由器的。
因此为了能让外网访问到我们局域网内的设备,就需要自己动手做一些操作来达到同样的目的,比如以下几种方法:
(1)用类似花生壳这样的DDNS服务平台做转发实现内网穿透,优点是比较简单稳定,缺点是需要持续付费,而且速度和延迟效果一般,而且每加一个端口都要额外付费。
(2)可以使用frp之类的软件做反向代理来实现内网穿透,这个方案也是需要一台带公网IP的云服务器的,优点就是完全可控,自己想配置多少个端口的穿透都可以,速度云服务器带宽有关。
至于为什么需要多个端口,是因为不同应用占用的端口不同,比如SSH走的是22号端口,如果需要自建Web服务的话则是走80/443端口,所以用上面第二个方案显然会方便很多。因此基于阿里云服务器,可以实现树莓派上的frp内网穿透。

阿里云端服务器配置frps

1.首先在阿里云服务器端配置安全组,打开相应的端口即可。
2.访问frp的官方GitHub网址,选择适合版本的压缩包,笔者云服务器为64位Linux系统,因此下载amd64版本的文件。
在阿里云服务器上,可以通过wget命令进行下载。
3.下载后进行解压并重命名解压后的文件夹,进入文件夹,并修改frps.ini文件,对端口,用户名和密码等进行具体设置。
其中dashboard_port是frp的web界面的端口号,dashboard_user以及对应的pwd是web界面的登录账户和登录密码,token则是frp客户端连接时的密码。启动frp的service端服务,然后可以配置自启动功能,使得每次开机可以自动开启frp的service端服务,首先新建systemctl 配置文件控制frps

 sudo nano /etc/systemd/system/frps.service

然后将以下内容粘贴到文件内

 [Unit]
 Description=fraps service
 After=network.target syslog.target
 Wants=network.target

 [Service]
 Type=simple
 //启动服务的命令(此处写frps的实际安装目录)
 ExecStart=/etc/frp/frps -c /etc/frp/frps.ini

 [Install]
 WantedBy=multi-user.target

4.可以通过systemctl命令来控制frp的service端服务,部分命令如下所示:
启动frps

 sudo systemctl start frps

服务器开机自启frps

 sudo systemctl enable frps

重启frps

 sudo systemctl restart frps

停止frps

 sudo systemctl stop frps

查看日志

 sudo systemctl status frps

自此,阿里云服务器上的frps配置完成。

树莓派端配置frpc

1.获取到树莓派的架构与位数后,就可以根据信息选择对应的frp的压缩包版本。
2.依然是访问frp的官方GitHub网址 ,选择arm版本的压缩包文件。下载后进行解压并重命名解压后的文件夹,进入文件夹,并修改frpc.ini文件,其中编辑server_addr为服务器的公网IP,token即上述所编辑的密码,server_port与云服务器端的bind_port保持一致。
3.然后可以为具体服务编辑配置项,启动frp的client端服务可通过下面的指令实现:

 ./frpc -c /frpc.ini

启动client端的服务后,在service端即阿里云服务器端也可以看到相应的响应结果。
4.同样地,可以配置自启动功能,使得每次开机可以自动开启frp的client端服务,新建systemctl 配置文件控制frpc

 sudo nano /lib/systemd/system/frpc.service

然后将以下内容粘贴到文件内

 [Unit]
 Description=frpc
 After=multi-user.target

 [Service]
 TimeoutStartSec=10
 RestartSec=30s
 Restart=always
 ExecStart=/home/pi/frpc -c /home/pi/frpc.ini    //注意更换frpc路径
 ExecStop=/bin/kill $MAINPID

 [INSTALL]
 WantedBy=multi-user.target

配置完就可以通过systemctl命令来控制frp的client端服务,控制命令与上述阿里云服务器端控制命令相同,树莓派端的frpc配置也到此完成。

总结

感谢阿里云提供的ECS服务,可以实现树莓派局域网下的公网访问。阿里云服务器的官方文档十分友好,使用起来十分舒适,后续我也会基于阿里云服务继续其他开发工作。

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
弹性计算 网络安全
阿里云国际OpenAPI多接口快速管理ECS服务器教程
阿里云国际OpenAPI多接口快速管理ECS服务器教程
|
4天前
|
JSON JavaScript 前端开发
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
38 22
|
4天前
|
JavaScript 前端开发 Java
vue2知识点:vue-cli脚手架配置代理服务器
vue2知识点:vue-cli脚手架配置代理服务器
25 7
|
4天前
|
前端开发 JavaScript Java
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
28 4
|
3天前
|
弹性计算 开发框架 .NET
阿里云服务器购买教程及云服务器地域、实例、操作系统、带宽等参数选择指南
对于初次购买阿里云服务器的用户来说,想使用阿里云服务器搭建网站或者运行APP、小程序等项目,第一步就是要先购买阿里云服务器,下面小编以图文形式给大家介绍一下阿里云服务器的购买流程,以及购买过程中如何云服务器地域、实例、带宽等关键配置和选择这些参数的一些注意事项,以供参考。
|
5天前
|
人工智能 运维 关系型数据库
携手UALink,阿里云磐久AI Infra 2.0服务器亮相2024 OCP全球峰会
阿里云服务器研发受邀和UALink联盟一起,在OCP全球峰会上重点阐述AI服务器Scale UP互连技术领域发展趋势
|
5天前
|
网络协议 安全 网络安全
阿里云国际修改域名绑定的DDoS高防服务器
阿里云国际修改域名绑定的DDoS高防服务器
|
5天前
|
SQL 安全 网络安全
阿里云高防服务器如何实现安全防护,以及如何接触安全防护
阿里云高防服务器如何实现安全防护,以及如何接触安全防护
|
5天前
|
安全 网络协议 网络安全
如何购买阿里云购买DDoS高防服务器?
如何购买阿里云购买DDoS高防服务器?
|
5天前
|
域名解析 弹性计算 缓存
阿里云国际云服务器全局流量分析功能详细介绍
阿里云国际云服务器全局流量分析功能详细介绍