一.前言

近段时间在青龙面板上使用代理,但网上代理商类型基本是数据中心型,效果跟本机直接请求没什么区别。手头正好有一部闲置的手机,因此尝试在手机上搭建一个代理服务器,这样网络请求的IP就由手机来决定了。

注:青龙面板APP已提供本地代理拓展模块,在移动端即可轻松配置动态代理。

二.正文

1.配置要求

  • 一台公网服务器;
  • 一台闲置的手机; 

2.原理介绍

青龙面板 mysql 青龙面板手机搭建教程_docker

 从上图可以看出,应用通过设置代理发起网络请求,服务器将该网络请求转发给客户端,客户端再将网络请求转发给目标服务器,这样目标服务器收到网络请求的IP就成了客户端的IP,通过改变客户端的IP就可以实现动态IP代理的目的了,而改变手机的IP是一件非常容易的事情。

为了实现上述功能,需要用到内网穿透代理搭建技术。公网服务器是无法直接连接到手机的,需要手机主动去连接服务器,而后服务器才能再将网络请求转发给手机,利用FrpTinyProxy便可实现。当然你也可以使用其他工具也实现这两个功能,可自行查找相关资料。

3.服务端配置

如果你有相关的网络编程基础可以手动去下载Frp并配置启动,这里为了方便已经将Frp服务打包成docker容器,一键安装即可:

docker run -dit \
    --name frps \
    --hostname frps \
    -p 10000:7000 \
    -p 10001:7002 \
    --restart unless-stopped \
wsfsp4/frps-amd64:v1

上面安装容器用到了2个端口映射,说明如下表: 

主机端口

容器端口

备注

10000

7000

客户端连接端口,可以按需修改主机端口,并在主机防火墙中将该端口开放

10001

7002

代理服务端口,可以按需修改主机端口,建议不要将该端口对外开放

进入容器/frp目录,打开frps.ini文件 ,你可以按需修改token字段(客户端验证密钥)其他字段如果你不清楚其作用就不要修改:

[common]
# 绑定地址
bind_addr = 0.0.0.0

# 绑定端口
bind_port = 7000

# 授权码
token = frp@123456

# 日志文件
log_file = ./frps.log

# 日志等级:trace, debug, info, warn, error
log_level = warn

# 日志保留天数
log_max_days = 2

进入容器终端,执行以下命令启动服务端:

cd /frp
./start.sh

 可以看到以下提示:

No process with name containing 'frps' was found.
//or
Killing process with PID: xx and its parent.

4.客户端配置

 手机是无法直接运行Frp的,因此我们需要借助Termux App(提取码1111),安装打开后执行以下命令,如提醒输入则输入'Y':

pkg update

安装termux-tools,用于系统设置:

pkg intsall termux-tools

执行命令,允许Termux后台运行

termux-wake-lock

安装TinyProxy,用于代理转发,如果你想进行一些参数的配置,比如日志、代理端口,可自行查找相关资料,这里就不讲解配置了:

pkg intsall tinyproxy

 安装Frp,用于接收服务端数据:

pkg install frpc

安装Vim,用于编辑文本:

pkg intsall vim

开始编辑配置文件:

vim frpc.ini

按下'i'键,输入下面内容,按照注释修改即可:

[common]
# 服务端IP
server_addr = xxx.xxx.xx.xx
# 服务端连接端口
server_port = 10000

# 密钥 同服务端设置
token = frp@123456

# 转发配置 无需修改
[proxy]
type = tcp
local_ip = 127.0.0.1
local_port = 8888
remote_port = 7002

按下表盘'ESC'键,然后输入':wq'并回车确认,至此客户端已经完成配置,输入下面命令即可启动代理:

tinyproxy && frpc -c frpc.ini &

最后,为了Termux能够在后台正常运行,你需要对手机的省电模式进行设置

青龙面板 mysql 青龙面板手机搭建教程_服务器_02

青龙面板 mysql 青龙面板手机搭建教程_服务器_03

 5.使用

跟正常代理一样,在应用中设置代理就可以使用,一般面板容器和主机是处于同一虚拟局域网,所以用主机局域网IP就行了,如果你对外开放代理服务(不建议这么做),就用服务器的公网IP:

http://主机局域网IP:10001

如果你不知道怎么获取主机局域网IP,一个简单的方法是打开容器列表,随便查看个容器的IP,那么1号就是主机局域网IP,即172.17.0.1

青龙面板 mysql 青龙面板手机搭建教程_青龙面板 mysql_04

在教程中出现了较多的端口设置,为了方便读者更好地理解,再补充一张原理图:

青龙面板 mysql 青龙面板手机搭建教程_docker_05

6.测评

(1)想改变代理的IP,在WIFI网络下只需要将路由器断电10秒左右重启即可,在移动网络下只需打开飞行模式10秒左右再关闭即可,可以说是非常方便;

(2)客户端的Frp具有重连功能,与服务器断开连接后重新接入网络会自动尝试连接,稳定性还是非常可以的;

(3)TinyProxy采用Http隧道技术,无需安装证书即可代理Https协议;

(4)一般来说公网服务器的网络是很稳定的,入/出网宽带也都在500KB/s以上,手机网速也不差,所以代理网速是完全可以满足一般脚本的网络请求。