ky818smKy818sm  2023-01-29 21:24 旷野小屋_123ppp资源网 隐藏边栏 |   抢沙发  736 
文章评分 0 次,平均分 0.0

本文档中给出的命令大多需要 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

  1. 登录管理面板,转到 “软件下载” :

  2. 选择 Linux 系统,然后选择正确的架构,点击按钮复制下载链接:

  3. 使用下面的命令进入 /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 分别为 1234567890 的隧道

查看隧道日志

您可以通过下面的命令查看隧道日志:

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>

 

 

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

发表评论

表情 格式 链接 私密 签到