利用旧手机搭建LinuxDeploy用作服务器,同时使用frp实现内网穿透

利用旧手机搭建LinuxDeploy用作服务器,同时使用frp实现内网穿透

十一月 04, 2021

前提

1、一台已经root的手机(必须要root),我的是安卓9版本的小米9

2、需要的软件

​ Linux Deploy 下载地址

​ BusyBox 下载地址

​ JuiceSSH 或者 Termius都行 因为这三个软件的下载或多或少都需要具备外网的环境,所以如果没有下载途径的话可以直接从我下面的网盘里下载 网盘链接 提取码:30yj

安装以及配置步骤

1、安装BusyBox

​ 安装好软件后直接打开点击install就行了,安装过程需要授予它root权限,默认的安装路径是 /system/xbin ,如果需要修改的话可以进到设置里面修改

2、安装Linux Deploy

​ 安装好软件后,点击左上角三个横杠,选择设置,勾选 锁定Wi-Fi 和 CPU唤醒

之后将下面的 PATH变量 设置为你刚才BusyBox的安装路径,之后点 更新环境

3、配置Linux Deploy

发行版:我这里选择的是CentOS

架构:架构的话取决于你自己的CPU架构,可以去下载DevCheck 来查看自己的CPU架构,(选错架构的话会导致后面安装失败)可以看到我的是arrch64的,所以我的架构的那一栏就选择arrch64,选择其他发行版的话同理

源地址:推荐使用国内的镜像源,可以从下面的镜像源中选一个

http://mirrors.bfsu.edu.cn/centos-altarch/
http://mirrors.nju.edu.cn/centos-altarch/
http://mirrors.ustc.edu.cn/centos-altarch/

安装类型:选择镜像,之后可以自己调整镜像大小

安装路径:默认

镜像大小:取决于你自己手机,可以和我一样先设4个G,反正之后可以调整

用户名与密码:自己随便设就行,用于后面通过ssh连接

本地化:选择 zh_CN.UTF-8

DNS:默认

挂载:根据自己需求,如果需要访问手机内部文件则勾选,挂载点设置为下图所示

SSH:没什么好说的,一定要启动,SSH设置保持默认就行

4、安装CentOS

​ 上述配置完成后返回到主页,点击右上角三个点,选择安装,等待安装完成即可。之后点击启动,若如下图所示则表示启动成功,其中倒数第二行后面一定要是done,否则则意味着安装失败

5、登录到Linux

​ 打开之前安装的JuiceSSH或者Termius,新建连接,服务器地址填 127.0.0.1 用户名和密码即为之前配置的用户名与密码,之后点击连接,不出意外的话,你就通过ssh连接上了你的Linux。同时你还可以使用处于同一局域网下的其他设备来连接到Linux,服务器地址即为你的手机IP,也就是显示在Linux Deploy软件主页上的地址。

下面讲如何通过内网穿透实现从公网访问这台手机上的Linux

主流的内网穿透工具有:花生壳、ngrok和frp,其中花生壳是收费的,而且价格还不太低,ngrok和frp都是免费的,不过ngrok免费版本每次启动会变IP,而frp的话则需要你拥有一台具有公网IP的服务器,由于我主要是自己搭着玩的,手上也正好有一台服务器,所以就选择了用frp来实现内网穿透。

服务端配置

frp下载地址:下载地址,根据架构不同,选择相应版本下载

wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz

然后解压

tar -zxvf frp_0.38.0_linux_amd64.tar.gz

可以将解压完的文件改个名,方便使用

mv frp_0.38.0_linux_amd64 frp

进入frp目录中

cd frp

下图为文件夹里包含的文件,其中前三个是与客户端相关的文件(以c结尾代表client即客户端)后三个则是与服务器相关的文件(以s结尾代表server)

image-20211105161437051

因为我们是在配置服务端,所以我们可以把前三个文件删除

rm frpc frpc.ini frpc_full.ini

然后修改frps.ini文件

vim frps.ini

首次打开应该只有如下两行

image-20211105162152048

向其中添加如下配置

image-20211105162431060

bind_port:表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。

dashboard_port:是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为你服务器的IP)查看frp服务运行信息。

token:是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。

dashboard_user 和 dashboard_pwd:表示打开仪表板页面登录的用户名和密码,自行设置即可。

vhost_http_port 和 vhost_https_port:用于反向代理HTTP主机时使用,本文没有使用,可以不管

编辑完成保存退出就行(vim操作不会的话自行百度搜索)

之后就可以运行frps的服务端了

./frps -c frps.ini

如下图所示即代表运行正常,可以访问 x.x.x.x:7500 并使用自己刚设置的用户名密码登录,即可看到仪表盘界面

image-20211105163022084

此时的服务端仅运行在前台,如果Ctrl+C停止或者关闭SSH窗口后,frps都会停止运行,因此使用nohup命令将其运行在后台,首先Ctrl+C停止服务,之后输入命令

nohup ./frps -c frps.ini &

输出如下内容即表示正常运行

nohup: ignoring input and appending output to 'nohup.out'

此时使用Ctrl+C关闭nohup,frps依然会在后台运行,使用jobs命令查看后台运行的程序,可以看到frps在后台正常运行。

接下来配置服务器端开机自启。由于在Linux Deploy中搭建的CentOS无法使用systemctl以及service命令,所以我们需要进行下面的操作

wget https://github.com/smaknsk/servicectl/archive/1.0.tar.gz
tar -xf 1.0.tar.gz -C /usr/local/lib/
ln -s /usr/local/lib/servicectl-1.0/servicectl /usr/bin/servicectl
ln -s /usr/local/lib/servicectl-1.0/serviced /usr/bin/serviced

之后

sudo vim /lib/systemd/system/frps.service

在frps.service里写入一下内容

[Unit]
Description=fraps service
After=network.target network-online.target syslog.target
Wants=network.target network-online.target

[Service]
Type=simple

#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/your/path/frps -c /your/path/frps.ini

[Install]
WantedBy=multi-user.target

然后启动frps

sudo servicectl start frps

打开自启动

sudo servicectl enable frps

至此服务端配置完毕

客户端配置

同样使用wget命令将相应版本的frp压缩包下载并解压,并删除其中frps相关的文件,留下frpc相关文件,编辑frpc.ini文件,默认打开如下图所示

image-20211105165332239

由于之前在服务端配置了token,所以在客户端我们需要加入token

image-20211105165425435

其中common字段下的三项分别为服务端的IP地址、端口以及刚添加的token,这些与之前服务端配置的保持一致就行

SSH字段则可以理解为自定义的规则,若之后你需要映射其他的端口,按照它的格式填写即可。

[SSH]:表示规则名称,自己定义

type:表示转发的协议类型,有TCP和UDP等选项可选择,可自行查询frp的手册

local_port:是本地应用的端口号,保持一致就行

remote_port:为该条规则在服务端开放的端口号,自己定义

配置完成即可运行frpc了,执行如下命令

./frpc -c frpc.ini

配置开机自启则与服务端配置相似

之后即可通过SSH连接到你的手机,IP地址为你服务器的IP地址,端口号为6000(即为你在SSH字段定义的端口),用户名与密码即为最初配置Linux Deploy设置的用户名与密码,教程结束。