利用旧手机搭建LinuxDeploy用作服务器,同时使用frp实现内网穿透
前提
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)
因为我们是在配置服务端,所以我们可以把前三个文件删除
rm frpc frpc.ini frpc_full.ini
然后修改frps.ini文件
vim frps.ini
首次打开应该只有如下两行
向其中添加如下配置
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 并使用自己刚设置的用户名密码登录,即可看到仪表盘界面
此时的服务端仅运行在前台,如果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文件,默认打开如下图所示
由于之前在服务端配置了token,所以在客户端我们需要加入token
其中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设置的用户名与密码,教程结束。