本文档中给出的命令大多需要 root
权限才能运行,请确保您现在已经处于有 root
权限的环境下。
如果您现在没有切换到 root
账户下,那么请使用 su
或者 sudo -s
命令来进行切换。
确认处理器架构
下载 frpc 前,请先确认您的处理器架构。执行下面的命令,根据输出结果查表:
<span class="token function">uname</span> <span class="token parameter variable">-m</span>
输出 | 架构 |
---|---|
i386 , i686 |
i386 |
x86_64 |
amd64 |
arm , armel |
arm_garbage |
armv7l , armhf |
armv7* |
aarch64 , armv8l |
arm64 |
mips |
mips* |
mips64 |
mips64* |
- 如果您使用
armv7
版时出现Illegal instruction
报错,请下载arm_garbage
版本重试 - mips/mips64 架构还需要确认字节序,请参考 下一节 进行操作,其他架构无需执行此操作
- 如果您使用 Termux+PRoot 运行其他发行版,或使用某 "开源手机 AI 开发框架",可能会碰到
Segmentation fault
报错。这是一个已知的 UPX 与 PRoot 及部分 Linux 内核协作的 Bug,请使用upx -d
解压程序使用,或在下载地址后加_noupx
下载已解压的版本
确认处理器字节序 (mips/mips64)
<span class="token comment"># 一般来说只需要使用这条命令:</span>
<span class="token builtin class-name">echo</span> <span class="token parameter variable">-n</span> I <span class="token operator">|</span> hexdump <span class="token parameter variable">-o</span> <span class="token operator">|</span> <span class="token function">awk</span> <span class="token string">'{print substr($2,6,1); exit}'</span>
<span class="token comment"># 如果上面的命令报错,请尝试这条:</span>
<span class="token builtin class-name">echo</span> <span class="token parameter variable">-n</span> I <span class="token operator">|</span> od <span class="token parameter variable">-to2</span> <span class="token operator">|</span> <span class="token function">awk</span> <span class="token string">'{print substr($2,6,1); exit}'</span>
输出 | 架构 |
---|---|
0 |
mips / mips64 |
1 |
mipsle / mips64le |
安装 frpc
- 登录管理面板,转到 “软件下载” :
- 选择 Linux 系统,然后选择正确的架构,点击按钮复制下载链接:
- 使用下面的命令进入
/usr/local/bin
目录并下载文件:<span class="token builtin class-name">cd</span> /usr/local/bin <span class="token comment"># 一般来说只需要使用这条命令:</span> <span class="token function">wget</span> <span class="token parameter variable">-O</span> frpc <span class="token operator"><</span>下载地址<span class="token operator">></span> <span class="token comment"># 如果上面的命令报错,请尝试这条:</span> <span class="token function">curl</span> <span class="token parameter variable">-Lo</span> frpc <span class="token operator"><</span>下载地址<span class="token operator">></span> <span class="token comment"># Linux frpc 通常已经过 UPX 压缩,如需下载未压缩的版本请在下载地址尾部加上 _noupx</span>
- 然后设置权限并校验文件是否有损坏:
<span class="token function">chmod</span> <span class="token number">755</span> frpc <span class="token function">ls</span> <span class="token parameter variable">-ls</span> frpc md5sum frpc
- 此时 frpc 就安装完成并可以正常使用了。您可以用此命令查看 frpc 版本号:
frpc <span class="token parameter variable">-v</span>
使用 frpc
请查看 启动隧道 一节了解如何启动 frpc 并连接到您的隧道。
通过本文档中介绍的方法安装后,您应该可以在任何目录直接输入 frpc <参数>
运行 frpc ,不需要 输入完整路径
简易后台运行
注意
不推荐采用 &
将 frpc 放到后台运行,建议参考下面的 配置开机自启 一节将 frpc 注册为系统服务
如果要临时将 frpc 放到后台运行,可以在运行命令的后面加 &
,例如:
frpc <span class="token parameter variable">-f</span> wdnmdtoken666666:12345 <span class="token operator">&</span>
前置知识
Systemd 是 Linux 系统的一种初始化系统实现,它管理的各种服务叫做 Unit,每个服务对应一个 Unit 配置文件
在本教程中,frpc 会被注册为一个服务,我们让 Systemd 来自动管理 frpc,借此实现开机自启和后台运行
Systemd 的服务有两种状态:
运行中
/已停止
/错误
启用
/禁用
如果 启用 了服务,开机的时候服务就会自启,反之就不会
编写配置文件
Systemd 的 Unit 配置文件 通常位于这些目录中:
- /lib/systemd/system (供软件包使用)
- /etc/systemd/system (供管理员使用)
本教程将选用第二个目录来放置 frpc 的 Unit 配置文件,并且 frpc 启用后报错退出时每分钟会自动重启一次
执行下面的命令,您应该会看到图中的提示
<span class="token function">vi</span> /etc/systemd/system/[email protected]
按一下 i
键,左下角应该会出现 -- INSERT --
或者 -- 插入 --
字样
然后复制并粘贴下面提供的服务文件内容,请注意 不要 多复制或少复制任何东西,确保粘贴后的内容和图中一模一样
<span class="token section"><span class="token punctuation">[</span><span class="token section-name selector">Unit</span><span class="token punctuation">]</span></span>
<span class="token key attr-name">Description</span><span class="token punctuation">=</span><span class="token value attr-value">SakuraFrp Service</span>
<span class="token key attr-name">After</span><span class="token punctuation">=</span><span class="token value attr-value">network.target</span>
<span class="token section"><span class="token punctuation">[</span><span class="token section-name selector">Service</span><span class="token punctuation">]</span></span>
<span class="token key attr-name">Type</span><span class="token punctuation">=</span><span class="token value attr-value">idle</span>
<span class="token key attr-name">User</span><span class="token punctuation">=</span><span class="token value attr-value">nobody</span>
<span class="token key attr-name">Restart</span><span class="token punctuation">=</span><span class="token value attr-value">on-failure</span>
<span class="token key attr-name">RestartSec</span><span class="token punctuation">=</span><span class="token value attr-value">60s</span>
<span class="token key attr-name">ExecStart</span><span class="token punctuation">=</span><span class="token value attr-value">/usr/local/bin/frpc -f %i</span>
<span class="token section"><span class="token punctuation">[</span><span class="token section-name selector">Install</span><span class="token punctuation">]</span></span>
<span class="token key attr-name">WantedBy</span><span class="token punctuation">=</span><span class="token value attr-value">multi-user.target</span>
粘贴完成后按一下 ESC
,左下角的 -- INSERT --
会消失,此时输入 :wq
并按回车退出
执行下面的命令重载 Systemd,这样服务就配置完成了
systemctl daemon-reload
提示
请记住后续操作中用到的 Unit 名称
是 frpc@<启动参数>
,例如 frpc@wdnmdtoken666666:12345
下面本教程将介绍一些 Systemd 的基本操作
启动/停止隧道
启动/停止隧道非常简单,使用下面的命令即可,start
是启动,stop
是停止
systemctl <span class="token operator"><</span>start<span class="token operator">|</span>stop<span class="token operator">></span> <span class="token operator"><</span>Unit名称<span class="token operator">></span>
提示
如果您想开启多条不同隧道,只要更换 Unit 名称
中的启动参数并多次执行对应的指令即可
举个例子,开启访问密钥为 wdnmdtoken666666
的用户所拥有的 ID 为 12345
的隧道:
systemctl start frpc@wdnmdtoken666666:12345
查看隧道状态
您可以通过下面的命令查看服务状态
systemctl status <span class="token operator"><</span>Unit名称<span class="token operator">></span>
举个例子,要查看上面开启的隧道状态可以使用
systemctl status frpc@wdnmdtoken666666:12345
注意
绝对不要 开启重复的隧道,这会造成出现各种不可预计的 Bug
执行多次 systemctl start
是 安全 的
配置好 Systemd 后,不要 再用 frpc -f <启动参数>
的形式开启隧道
如果您忘记了之前开启过哪些隧道,使用下面的命令可以列出当前运行中的隧道
systemctl list-units <span class="token string">"frpc@*"</span>
下图中的信息表示我们开启了访问密钥为 wdnmdtoken666666
的用户所拥有的两条 ID 分别为 12345
和 67890
的隧道
查看隧道日志
您可以通过下面的命令查看隧道日志:
journalctl <span class="token parameter variable">-u</span> <span class="token operator"><</span>Unit名称<span class="token operator">></span>
举个例子,要查看上面开启的隧道状态可以使用
journalctl <span class="token parameter variable">-u</span> frpc@wdnmdtoken666666:12345
如果当前窗口无法显示所有日志,可以用 ↑
、↓
方向键滚动,输入大写的 G
跳转动到日志底部,输入 q
退出日志查看。更多使用方法请参阅 man journalctl
。
配置开机自启
装好服务后,实现开机自启非常简单,回顾一下前置知识
- 我们只要
启用
服务就可以实现开机自启 - 如果不想开机自启了,
禁用
服务即可
使用下面的命令启用/禁用服务,enable
是启用,disable
是禁用,操作完成后再用 status
检查一下状态
systemctl <span class="token operator"><</span>enable<span class="token operator">|</span>disable<span class="token operator">></span> <span class="token operator"><</span>Unit名称<span class="token operator">></span>
systemctl status <span class="token operator"><</span>Unit名称<span class="token operator">></span>
如果一切正常,您会看到我图中的两个红色标注的内容
提示
没看到第一个创建符号链接的提示也是正常的,只要下面的状态显示为 enabled
就行
如果您忘记了之前设置过的自启隧道,可以使用下面的命令列出
和上面是类似的,只是多了个 --all
确保停止了的服务也能被列出
systemctl list-units <span class="token parameter variable">--all</span> <span class="token string">"frpc@*"</span>
本文为原创文章,版权归123ppp资源网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ xtrabackup 2.4 备份mysql教程12/05
- ♥ wordpress修改固定链接设置后旧链接301重定向到新链接的办法02/09
- ♥ SCP命令来实现两台LINUX主机之间的文件传输06/21
- ♥ WordPress 技巧:屏蔽站点Feed12/22
- ♥ 用Rsync实现远程同步11/01
- ♥ 调整inotify内核参数11/04