Alpine Linux 安装 frpc 记录

qaqlandqaqland
2 min read

Table of contents

快放暑假了,想给在宿舍的随身 WiFi 加上远程访问的功能,之前使用过 Tailscale 及 Cloudflare Tunnel,于是想尝试下 frp。安装的时候回想起来很久很久之前,要玩我的世界基岩服,开服时面对黑黑的命令行不知所措。从当时的不敢动弹,现在至少不那么害怕,记录下自己现在的改变。

frp 是什么

内网转发呗,随便搜个教程:https://www.linuxprobe.com/frp-tcpstcp-ssh-homelinux.html

认真看完可以获得以下信息:

  • frp 分为 frpc 客户端和 frps 服务端,服务端在公网

  • frp 有两种协议,tcp 是直接暴露,stcp 是连接双方都要配置 frpc

  • 配置文件是 TOML 格式,主要有两大部分

  • 软件执行只需要配置文件加上一行命令

由于服务端是给力的群友提供的,我就只用关心客户端,交流之后选择了简单的tcp格式

安装

我的机器是 Alpine Linux 最新稳定版,先搜包,能用系统包管理器装的坚决偷懒按照规定来

$ apk search frp
frp-0.48.0-r3
frp-openrc-0.48.0-r3

看到有openrc就很开心,这意味着我们不用自己写开启自启脚本(这里是不是很讽刺,在Windows平台很多软件巴不得用户开机自启,而Linux平台要自己去写)

安装安装,我看谁不会用包管理器安装:

$ doas apk add frp
fetch http://mirror.nju.edu.cn/alpine/latest-stable/main/x86_64/APKINDEX.tar.gz
fetch http://mirror.nju.edu.cn/alpine/latest-stable/community/x86_64/APKINDEX.tar.gz
(1/2) Installing frp (0.48.0-r3)
(2/2) Installing frp-openrc (0.48.0-r3)
Executing busybox-1.36.1-r2.trigger
OK: 4077 MiB in 734 packages

我没用 sudo 用的是 doas ,问题不大,本文就换个单词的区别。看一下自己是不是装错了,因为有概率软件同名,按理来说应该先执行这一步的:

$ apk info -d frp
frp-0.48.0-r3 description:
A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.

到此可以确定应该是对的,下一步就要考虑配置文件与自启脚本的问题。

apk info

-d, --description Print the package description

配置

一般会有个配置文件示例,但是不确定,看一下:

$ apk info -L frp
frp-0.48.0-r3 contains:
etc/frp/frpc.ini
etc/frp/frps.ini
usr/bin/frpc
usr/bin/frps

$ apk info -L frp-openrc
frp-openrc-0.48.0-r3 contains:
etc/conf.d/frpc
etc/conf.d/frps
etc/init.d/frpc
etc/init.d/frps

etc/frp/frpc.ini 是写 frp 配置的地方,改好保存。 etc/conf.d/frpcetc/init.d/frpc 是 openrc 启动需要的配置,两者的区别是前者是自启的配置选项,后者专心于自启的逻辑及依赖,要编辑配置一般不要动 etc/init.d/frpc(自己随便写的配置文件当然随便动啦!)

apk info

-L, --contents List files included in the package

以防万一看一眼:

$ cat /etc/conf.d/frpc
# cfgfile=""⏎
$ cat /etc/init.d/frpc
#!/sbin/openrc-run

name=frpc
description="frp client"
command="/usr/bin/$name"
supervisor=supervise-daemon

: ${cfgfile:=/etc/frp/$RC_SVCNAME.ini}
command_args="-c $cfgfile"
pidfile="/run/$RC_SVCNAME.pid"
extra_started_commands="reload"
description_reload="Reload configuration"

: ${respawn_delay:=5}
: ${respawn_max:=0}

depend() {
        need net
        after firewall
}

reload() {
        frpc reload -c $cfgfile
}⏎

: ${cfgfile:=/etc/frp/$RC_SVCNAME.ini} 虽然不会写但是猜到变量代表刚刚编辑的frp配置文件(这里大概是缺省变量,因为/etc/conf.d/frpc 里也有个对应的变量),command_args="-c $cfgfile" 也能与前面上网搜到的教程相匹配,OJBK!

先测试,服务,启动!

$ doas rc-service frpc start
 * Caching service dependencies ... [ ok ]
 * Starting frpc ...                [ ok ]

(其他电脑上)SSH,林克司达头!

$ ssh <user>@<ip> -p <port> -i <key-file>

延迟好高,算了,两边的网都是蹭的,要啥自行车。把服务加入开机自启,注意openrc服务的名字:

$ doas rc-update add frpc

结束!

0
Subscribe to my newsletter

Read articles from qaqland directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

qaqland
qaqland