背景
最近入手了一块raspberry 3b+,想要随时随地访问树莓派需要配置内网穿透。我最初找了一些这方便的文章,根据步骤配置,效果不怎么样。然后用了花生壳,体验也不好。后来发现一款强大的免费内网穿透软件,比起付费软件毫不逊色。
配置方案
注册Sakura frp账号
百度Sakura,第一个就是官网,长这样

点击注册,按照提示填写资料。

注册完成后进入管理面板,记住访问密匙,后面会用到。

确认系统架构
树莓派官方系统的系统架构是arm,如果使用的其它系统,执行下面命令,根据输出结果确定系统架构
1 | $ uname -a |
| 架构 | 输出结果 |
|---|---|
| i386 | i386, i686 |
| amd64 | x86_64 |
| arm | arm, armv7l |
| arm64 | aarch64, armv8l |
| mips | mips |
| mips64 | mips64 |
| 不支持 | alpha, arc, blackfin, c6x, cris, frv, h8300, hexagon, ia64, m32r, m68k, metag, microblaze, mn10300, nios2, openrisc, parisc, parisc64, ppc, ppcle, ppc64, ppc64le, s390, s390x, score, sh, sh64, sparc, sparc64, tile, unicore32, xtensa |
如果您的输出结果不在上面列表中,可以通过[百度](https://www.baidu.com/进行搜索
安装frpc
登录管理面板,在侧边栏点击 “软件下载” :
根据系统架构复制相应的下载地址

使用下面的命令进入/usr/local/bin目录并下载文件
1 | cd /usr/local/bin |

然后使用下面的命令设置正确的权限并检查输出
1 | # chmod 755 frpc |

如果您看到和图里一样的输出,frpc 就安装完成并可以正常使用了。您可以执行下面的命令来再次确认
1 | $ frpc -v |
配置开机自启/后台运行
让frpc在开机时自启或在后台运行,可以让你在任何地方连接树莓派,这需要将frpc注册为系统服务
首先,您要搞清楚您的Linux系统使用的 初始化系统 是什么,官方文档提供三种常见初始化系统的配置指南:
执行下面的命令然后查看输出,确定您的初始化系统
1 | # if [[ `/sbin/init --version` =~ upstart ]]; then echo Upstart; elif [[ `systemctl` =~ -\.mount ]]; then echo Systemd; elif [[ -f /etc/init.d/cron && ! -h /etc/init.d/cron ]]; then echo SysV-Init; else echo Unknown; fi |

目前官方文档上只有Systemd的配置指南,另外两个还没写好,本人目前用的是树莓派官方系统,初始化系统是Systemd,下面是Systemd配置frpc开机自启/后台运行的方法
编写配置文件
Systemd的Unit配置文件 通常位于这些目录中:
- /lib/systemd/system
- /etc/systemd/system
本文选用第一个目录来放置frpc的Unit配置文件,并且frpc启用后报错退出时每分钟会自动重启一次
执行下面命令
1 | # vi /lib/systemd/system/frpc@.service |
其中vi是一个文本编辑器,可以换成其它的
输入下述内容
1 | [Unit] |
执行下面的命令重载Systemd,这样这样服务就配置完成了
1 | # systemctl daemon-reload |
配置开机自启
使用下面的命令启用/禁用服务,enable是启用,disable是禁用,操作完成后再用status检查一下状态
1 | # systemctl <enable|disable> <Unit名称> |
如果一切正常,您会看到我图中的两个红色标注的内容
没看到第一个创建符号链接的提示也是正常的,只要下面的状态显示为
enabled就行
启动器的基本设置
登录管理面板,点击侧边栏的“软件下载”,下载推荐版本,如果打不开再换下面的传统启动器

下载完毕后解压,点击SakuraLauncher.exe运行启动器(如果下载的是传统启动器运行LegacyLauncher.exe)进入用户信息界面,复制访问密钥(也叫token)到启动器点击登录

创建隧道或在官网创建隧道,隧道创建成功后可通过启动器启动隧道

启动成功后右下角会弹出通知,提示隧道连接方式。该通知可以在设置中通过 关闭隧道状态提示 选项禁用

转到日志标签可以复制连接方式

关于隧道
启动/停止隧道
1 | # systemctl <start|stop> <Unit名称> |
使用上面命令启动/停止隧道,start是启动,stop是停止
其中<Unit名称>为<你的Token>:<隧道ID>[隧道ID[隧道ID…]]
如:
1 | # systemctl start frpc@wdnmdtoken666666:12345 |
查看隧道状态
可以通过下面命令查看特定隧道状态
1 | # systemctl status <Unit名称> |
或者通过下面命令查看所有隧道状态
1 | # systemctl list-units frpc@* |