文章目录
0. 前言
- 如果你只想在局域网下搭建树莓派服务器(如家庭影院、家庭云盘),那么完全不需要进行内网外穿
- 内穿实现方法很多,如花生壳、Nrgok、frp等,但前提是需要一个公网ip
- 我的实现方法:通过阿里云ECS服务器获得公网ip,通过frp将树莓派内网穿透到阿里云服务器的公网
- 开搞吧…
1. 阿里云服务器选购
笔者购买时阿里云有活动,新人服务器优惠:优惠链接地址(注意活动截止时间)
由于服务器搭载在树莓派上(同等性能的树莓派和云服务器,服务器贵太多了),所以对于云服务器的性能要求并不高,蓝框的两个随便选一个就好,建议直接三年拉满,原价续费还是挺贵的;选配时可以增加一些带宽
笔者系统选择的是Ubuntu20.04LTS,在控制台中即可看到新购买的服务器实例,进行远程连接,选择Workbench远程连接即可
远程连接进入root终端;
备注:第一次登录需要root账户密码,忘记密码可以在控制台重置实例密码
3. 配置frp阿里云服务端----frps
3.1 下载frp压缩包
访问frp的官方GitHub页面:传送门 选择适合版本的压缩包,笔者云服务器为64位Linux系统,树莓派为armv7l
在对应版本压缩包上右键,保存链接地址,然后回到阿里云Workbench远程连接终端,在任意位置新建一个文件夹用来存放frps,笔者在root目录下建立frp文件夹用来下载
cd
mkdir frp
cd frp
wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz
注意将wget后改为你自己选择的版本的连接;下载后进行解压:
tar -zxvf frp_0.36.2_linux_amd64.tar.gz
cd frp_0.36.2_linux_amd64
3.2 配置frps.ini
进入解压后的目录,观察文件结构:
由于我们是服务端,所以frpc相关文件都没有用,可以删除
rm -rf frpc
(当然也可以不删,随你)
设置服务端配置文件:笔者喜欢用nano编辑器
nano frps.ini
配置如下:
[common]
bind_port = 7000
vhost_http_port = 80
vhost_https_port = 443
dashboard_port = 7500
privilege_token = 12345678
说明:
- bind_port是frps的监听端口,可以自己决定,这个参数应与后面配置frpc时的参数一致,需要在阿里云控制台上打开防火墙对应端口;
- vhost_http_port和vhost_https_port是http和https服务所设置的虚拟主机的端口,一般设置成80和443,需要在阿里云控制台上打开防火墙对应端口;
- 更多帮助 见frp帮助文档:传送门
3.3 配置阿里云服务器防火墙
接下来配置阿里云防火墙(安全组):主要的是蓝框的三个
3.4 启动frps服务
最后启动frp服务端
./frps -c ./frps.ini
最后的最后,添加frps开机自启动
sudo nano /lib/systemd/system/frps.service
添加如下内容
[Unit]
Description=fraps service
After=network.target network-online.target syslog.target
Wants=network.target network-online.target
[Service]
Type=simple
Restart=on-failure
RestartSec=5s
ExecStart=/root/frps -c /root/frps.ini #注意更改frps路径
[Install]
WantedBy=multi-user.target
3.5 参考指令:
sudo systemctl start frps.service #开启frps服务
sudo systemctl enable frps.service #设置开机自启动
sudo systemctl restart frps.service #重启frps
sudo systemctl status frps.service #查看frps状态
4. 配置frp树莓派客户端----frpc
4.1 下载并配置frp
同理,下载支持树莓派的frp版本,新建一个文件夹用来存放,设置frpc.ini
[common]
server_addr = xxx.xxx.xxx.xxx
server_port = 7000
privilege_token = 12345678
其中需要注意的几点:
- server_addr填入阿里云主机的公网IP地址,server_port要和frps配置中的bind_port保持统一;
- privilege_token应和frps中的保持一致;
4.2 配置SSH,追加frpc.ini
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
配置好后你就可以通过公网IP:6000
来实现到树莓派的SSH。
4.3 配置Http,追加frpc.ini
[web]
type = http
local_port = 80
custom_domains = xxx.xxx.xxx.xxx
custom_domains
可暂时填阿里云服务器公网ip(挖个坑,以后填)
设置树莓派frp客户端开机自启动
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
4.4 参考指令:
sudo systemctl start frpc # 启动命令
sudo systemctl stop frpc # 停止命令
sudo systemctl restart frpc # 重启命令
sudo systemctl status frpc # 查看状态
5. 测试:使用PuTTY外网连接树莓派
结语?:困死了…我要睡觉了,有空填坑