Alpine Linux 安装 frpc 记录
快放暑假了,想给在宿舍的随身 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/frpc
与 etc/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
结束!
Subscribe to my newsletter
Read articles from qaqland directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by