背景

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

配置方案

注册Sakura frp账号

百度Sakura,第一个就是官网,长这样
image.png
点击注册,按照提示填写资料。
image.png
注册完成后进入管理面板,记住访问密匙,后面会用到。
image.png

确认系统架构

树莓派官方系统的系统架构是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

登录管理面板,在侧边栏点击 “软件下载” :
根据系统架构复制相应的下载地址
image.png
使用下面的命令进入/usr/local/bin目录并下载文件

1
2
$ cd /usr/local/bin
# curl -Lo frpc 您刚才复制的下载地址

image.png

然后使用下面的命令设置正确的权限并检查输出

1
2
# chmod 755 frpc
# ls -ls frpc

image.png
如果您看到和图里一样的输出,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

image.png

目前官方文档上只有Systemd的配置指南,另外两个还没写好,本人目前用的是树莓派官方系统,初始化系统是Systemd,下面是Systemd配置frpc开机自启/后台运行的方法

编写配置文件

SystemdUnit配置文件 通常位于这些目录中:

  • /lib/systemd/system
  • /etc/systemd/system
    本文选用第一个目录来放置frpcUnit配置文件,并且frpc启用后报错退出时每分钟会自动重启一次
    执行下面命令
1
# vi /lib/systemd/system/frpc@.service

其中vi是一个文本编辑器,可以换成其它的
输入下述内容

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=SakuraFrp Service
After=network.target

[Service]
Type=idle
User=nobody
Restart=on-failure
RestartSec=60s
ExecStart=/usr/local/bin/frpc -f %i

[Install]
WantedBy=multi-user.target

执行下面的命令重载Systemd,这样这样服务就配置完成了

1
# systemctl daemon-reload
配置开机自启

使用下面的命令启用/禁用服务,enable是启用,disable是禁用,操作完成后再用status检查一下状态

1
2
# systemctl <enable|disable> <Unit名称>
# systemctl status <Unit名称>

如果一切正常,您会看到我图中的两个红色标注的内容

没看到第一个创建符号链接的提示也是正常的,只要下面的状态显示为enabled就行
image.png

启动器的基本设置

登录管理面板,点击侧边栏的“软件下载”,下载推荐版本,如果打不开再换下面的传统启动器
image.png
下载完毕后解压,点击SakuraLauncher.exe运行启动器(如果下载的是传统启动器运行LegacyLauncher.exe)进入用户信息界面,复制访问密钥(也叫token)到启动器点击登录
image.png
创建隧道或在官网创建隧道,隧道创建成功后可通过启动器启动隧道
image.png
启动成功后右下角会弹出通知,提示隧道连接方式。该通知可以在设置中通过 关闭隧道状态提示 选项禁用
image.png
转到日志标签可以复制连接方式
image

关于隧道

启动/停止隧道
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@*

附录

参考:Sakura Frp帮助文档