c#服务器后台搭建_自用树莓派笔记1: 用frp将树莓派挂靠到云服务器

序言

最近玩树莓派,发现功能还是很强大的。软件上,Linux给了很大的自由度(虽然对于一个才开始接触的玩家来说觉得也挺复杂的);硬件上,GPIO能连接的东西也很多。

有一些项目,看了网上的教程觉得不尽人意。一则有些已经过时了,软件提供了新的版本;再则,有些使用了Linux上过时的技术;三来,网上教程很多感觉不够规范,例如软件包里面明明提供了相关文件的,自己不仔细阅读文档,又重新写了一个还不如原装的。如此之类不够优雅的问题比比皆是。

我也是一个才接触树莓派的爱好者,这个系列打算做一个自用的笔记,以便我自己今后查阅用,会写得比较简洁而非详细。所以如果偶然有人看到了,有什么问题,我也不一定能解决,也不一定会回复,请见谅。

我的习惯基本上是先阅读了软件自己的文档之后,按照自己的理解,参考已有的教程,对于原生的配置文件进行能满足任务的最小改动。个人有强迫症,感觉做一件事情必须实现的过程也规范、优美才好。


下载与安装

直接到frp的官方下载对应架构处理器的软件包,或者自己编译。我的树莓派3B+处理器为armv7的32位,下载arm.tar.gz文件;我的云服务器处理器为Intel的64位,选择amd64.tar.gz。本文写成时的最新版本为0.33.0。

顺便,查询处理器相关信息可以使用如下命令:

arch
lscpu

tarball文件的解压用:

tar -xzf myfile.tar.gz

解压得到的文件夹放在一个合理的地方就可以了。这里也是我不太明白的一个地方,手动解压的软件到底放在哪里才比较好,留待以后学习更多再来修改吧。暂时放在了/usr/share/frp这个位置。然后,某些文件可能需要“执行”的权限,需要用chmod进行相应的修改。


树莓派(client)端的配置

client端的配置文件为frpc.ini,默认情况如下

[common]
server_addr = 127.0.0.1
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

我只对服务器地址进行了修改:

server_addr = <云服务器的公网IP地址>

其他项的意义大致如下,可以不修改:

server_port = 7000 # 服务器和客户端通信的端口
type = tcp # 通信协议
remote_port = 6000
local_port = 22 # 访问云服务器的6000端口相当于访问树莓派的22端口(ssh默认为22)

接下来可以启动frpc:

./frpc -c ./frpc.ini

服务器(server)端配置

我同样在服务器上把软件包放在了/usr/share/frp的位置,服务器端配置文件frps.ini更为简单,打开时默认如此:

[common]
bind_port = 7000 # 和client通信的端口,和上面server_port保持一致。

上面在client端的配置中,我们已经发现frp内网穿透将使用到云服务器的6000和7000端口,因此需要在云服务器上允许相应端口的访问,参考如下:

1f761614acfaa9ea323e8422a8051a60.png

一般情况下不修改即可。直接启动frps:

./frps -c ./frps.ini

自启动和后台的配置

在服务器端,由于不会断电,我直接让frps运行在后台。使用的是功能很强大的screen,之前在挂minecraft基岩版服务器的时候已经接触过了,所以很顺手。常用的指令如下:

# 安装(Ubuntu为例)
screen -S <窗口名字> 

在树莓派端,考虑到经常会断电,要麻烦一些,需要设置开机自启动。好在软件包里面已经为我们提供了自启动需要的配置文件,简单修改即可。在/usr/share/frp/systemd中找到frpc.service:

[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/frpc -c /etc/frp/frpc.ini # 改成软件实际安装的位置就可以了
ExecReload=/usr/bin/frpc reload -c /etc/frp/frpc.ini # 改成软件实际安装的位置就可以了

[Install]
WantedBy=multi-user.target

例如按照我这里的安装地址就应该改成:

ExecStart=/usr/share/frp/frpc -c /usr/share/frp/frpc.ini
ExecReload=/usr/share/frp/frpc reload -c /usr/share/frp/frpc.ini

之后将frpc.service文件放在/lib/systemd/system文件夹中,使用如下命令启动和设置自启动:

# 启动frpc,可以先进行测试
sudo systemctl status frpc 

简单来说,设置好之后,重启一下树莓派然后看看进程在不在就可以了。

enable frpc
sudo reboot
sudo systemctl status frpc

正常的话,应该可以看到frpc端的记录,如下图。当树莓派成功挂靠到云服务器后,服务器端的frps也会有相应的记录。

6fe84cd8231bf9db508ad320033d6482.png

局域网以外用ssh登陆到树莓派

官网给出的方法是:

# 端口就是前面的remote-port,pi是树莓派上的用户,后面是云服务器的公网IP。

不知道什么原因我的Mac Terminal登陆时经常报错 Bad configuration option: port:6000 。但用应该是同一回事的

6000 pi@xxx.xxx.xx.xxx

则可以正常登陆到pi。

后记

本笔记中只是最简单的实现,仅仅实现了在外网用ssh连接到树莓派这一个功能。frp还提供更复杂的功能,需要对配置文件进行进一步的修改。建议查看后面的参考文献。

参考文献

  1. frp中文文档
  2. screen的简易指南
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值