来一打自建IP Proxy玩玩之Majora
前言:为什么需要它~
IP代理那么多,其实大家很多时候图省事都直接采购了。
反正蛇鼠有路,也没什么需要讲的,大家看着玩就好。
但是有时候还是需要更可控或者更优质的资源,
可能就得看下自建方案了。
某些朋友可能有印象,很久之前我玩过这个项目:
只是....
后来项目停止更新了,
我自己这边的需求也不多了,
于是也没继续折腾了。
再然后,
后来看到了“新玩具”,
于是又折腾了一下...
新玩具是:
使用简单
一键完成代理服务搭建,任意网络设备运行即加入代理ip服务,
不需要复杂的组网络、网络拓扑配置、终端配置等。
内嵌内网穿透,无论您的网络设备身在何处,只要可以上网即可提供代理IP资源
多种网络终端
支持pc(Windows、Linux、macOS),支持Android手机,
支持路由器等网络设备,支持API集成到各种应用软件中
管理和控制
统一的后台系统、多用户体系、报表和用量控制、设备监控、设备状态查看、
远程重播和控制、供应端和消费端计量等
可靠和性能
支持完整的http/https/socks5代理协议,
支内存毫秒级别的失败隧道路由切换、异步NIO和内存复用,
实现海量高吞吐带宽数据转发(已验证单台服务器200M带宽无性能问题)。
好像...
对内支持连接各种设备,
对外直接提供隧道代理。
讲得挺厉害的哦。
看看咋样~
服务起手
- 提前安装Docker
# 服务器: 安装docker
yum install -y docker
# 服务器: 下载镜像:
docker pull registry.cn-beijing.aliyuncs.com/iinti/common:majora-allInOne-latest
# 服务器:启动majora服务器
docker run -d -p 5876:5876 -p 5879:5879 -p 30000-30200:30000-30200 registry.cn-beijing.aliyuncs.com/iinti/common:majora-allInOne-latest
# 安装和配置app(app为例)
https://oss.iinti.cn/majora/majora-client-android.apk
# 使用手机app的网络提供代理能力
curl -x majora:arojam2021@majora.iinti.cn:30002 https://www.baidu.com/
注意端口开放:
Web管理后台: -p 5876:5876
客户端长链接端口: -p 5879:5879
默认对外暴露的代理端口: -p 30000-30200:30000-30200
具体相关配置见:application.properties
“初始化系统”
注册Admin用户
点击“立即注入”,系统首个注册用户默认就是Admin 用户。
设置 “代理账号密码”。
PS: 总不能是个人都能用吧?
安装配置App:Android客户端
嗯?安卓客户端是撒。
用人话来说,
就是把手机端作为代理出口。(4G、5G、WIFI....
很有趣的思路。
https://oss.iinti.cn/majora/majora-client-android.apk
下载安装。
默认配置是链接到 "majora.ihttp://inti.cn:5879",
这里需要改成自己的服务器IP+ 端口。
道理来说,到这里安卓App已经搞掂了。
这时候我们去 majora 管理后台看下。
设备ID:
unknown_69e9e9b8-2266-4ccf-bded-1d5cc44b0023 |
出口IP:
58.247.23.77 ( 联通5G)
测试代理功能
- 偷懒,这里用的是majora的测试服务器
curl -vvv -x majora:majora@majora.iinti.cn:30000 https://myip.ipip.net
测试结果
➜ ~ curl -vvv -x majora:majora@majora.iinti.cn:30000 https://myip.ipip.net
* Trying 61.174.243.41:30000...
* Connected to majora.iinti.cn (61.174.243.41) port 30000 (#0)
* allocate connect buffer
* Establish HTTP proxy tunnel to myip.ipip.net:443
* Proxy auth using Basic with user 'majora'
> CONNECT myip.ipip.net:443 HTTP/1.1
> Host: myip.ipip.net:443
> Proxy-Authorization: Basic bWFqb3JhOm1ham9yYQ==
> User-Agent: curl/7.88.1
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 Connection established
< connection: keep-alive
<
* CONNECT phase completed
* CONNECT tunnel established, response 200
* ALPN: offers h2,http/1.1
* (304) (OUT), TLS handshake, Client hello (1):
* CAfile: /etc/ssl/cert.pem
* CApath: none
* (304) (IN), TLS handshake, Server hello (2):
* (304) (IN), TLS handshake, Unknown (8):
* (304) (IN), TLS handshake, Certificate (11):
* (304) (IN), TLS handshake, CERT verify (15):
* (304) (IN), TLS handshake, Finished (20):
* (304) (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / AEAD-AES256-GCM-SHA384
* ALPN: server accepted http/1.1
* Server certificate:
* subject: CN=*.ipip.net
* start date: Apr 5 00:00:00 2023 GMT
* expire date: Aug 24 23:59:59 2023 GMT
* subjectAltName: host "myip.ipip.net" matched cert's "*.ipip.net"
* issuer: C=CN; O=TrustAsia Technologies, Inc.; OU=Domain Validated SSL; CN=TrustAsia TLS ECC CA
* SSL certificate verify ok.
* using HTTP/1.1
> GET / HTTP/1.1
> Host: myip.ipip.net
> User-Agent: curl/7.88.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Sat, 24 Jun 2023 04:39:07 GMT
< Content-Type: text/plain; charset=utf-8
< Content-Length: 67
< Connection: keep-alive
< Node: ipip-myip5
< Strict-Transport-Security: max-age=0; preload
< X-Cache: BYPASS
< X-Request-Id: e46e9443a8becb0a15645e0da28cd366
< Server: WAF
< Connection: close
< Accept-Ranges: bytes
<
当前 IP:58.247.23.77 来自于:中国 上海 上海 联通
* Closing connection 0
➜
到这里,
整个系统其实已经正常跑起来了。
其他客户端
当然,majora这边也是支持VPS Linux 和Windows 客户端,甚至也有路由器版本.
具体的配置过程可参考 Majora 客户端:PC主机环境
下载地址:https://oss.iinti.cn/majora/bin/latest,
选择对应的系统版本,
点击下载或者复制对应的下载链接,
使用wget
下载。
附加彩蛋一:App重播
使用shizuku实现免root的飞行模式重播 -> 移动网络情况下获取新IP。
在使用Android收集作为majora客户端时,定时重播或者被业务管理的重播是比较重要的支持。在Android中重播即飞行模式的切换。 然而由于飞行模式切换是一个高阶权限,随着Android版本不同具备不同的行为拦截,故majora app目前只能在满足一些条件才可以执行飞行模式切换动作。
#Android各版本飞行模式约束和重播方案选定
- 低版本(约小于Android5.0),使用广播命令重播,无限制
- 中版本(约Android 5.0-9.0),重播广播将会被系统过滤拦截,除非广播发出者是root/system身份。
- adb可以写settings,然而settings仅仅针对于系统的设置页面,并没有触发底层网卡重启流程,此时在app界面看到似乎飞行模式打开了,然而实际上并没有底层行为,重播不生效
- 只能使用广播发起飞行模式,但是adb级别权限也会被系统拦截。故此时手机必须root才能重播
- 高版本(大于10),此时使用cmd命令触发重播
- root可能比较困难,但是支持adb权限
- adb权限下,使用cmd connect 命令族完成重播
总结: 如果完成了root,那么均支持重播;
否则要么Android小于5.0,
要么大于10.0且借助shizuku提权到adb权限
附加彩蛋二:VPS 客户端重播脚本支持
# [必选] majora 服务端的地址,支持域名模式
tunnel_addr: majora.iinti.cn:5879
# [可选] 自定义的dns地址
dns_server: 114.114.114.114:53
# [可选] 日志级别 默认info,可选值(debug/info/warn/error)
log_level: info
# [可选] 日志路径
log_dir: log
# [可选] 日志文件名
log_file: majora.log
# [可选] 连接重试间隔(重播或者服务端升级时,客户端自动重试的间隔)
retry_duration: 30s
# [可选] 自定义网卡, 用于多网卡模式下
intface: en0
# [可选] 重播配置 (vps拨号场景,用于换IP)
redial:
# 重播的cmd
# unix/linux 下 /bin/bash
# windows 下 CMD
command: /bin/bash
# 重播的拨号执行脚本,一般对应的vps提供商会提供
exec_path: ppe_start.sh
# 重播的执行间隔
redial_duration: 10m
# [可选] extra 配置
extra:
# [可选] 自定义当前节点的账号
account: majora
附加彩蛋三:Windows客户端
在windows环境下,如果将majora服务化,
则可以使得majora永久存活,并且开机自启动。
- 资源下载:https://oss.iinti.cn/majora/majora-cli_windows_amd64.zipopen in new window
- 原理:使用winswopen in new window将majora.exe 注册成Windows服务,
- 同时winsw会配置开机自启动,以及实现故障自恢复、进程守护等。
./service.exe install
./service.exe start;
./service.exe status;
其他注意项
- registry.cn-beijing.aliyuncs.com/iinti/common:majora-allInOne-latest
这个版本的镜像内置MySQL数据库,
切记请勿直接用于生产环境!!!
切记请勿直接用于生产环境!!!
切记请勿直接用于生产环境!!!
生产环境建议数据库和服务分离。
请参考: 服务安装:docker compose 或者 服务安装:手动部署
务必设置代理账号密码
- 务必!!!
- 务必!!!
- 务必!!!
最后。
好好学习,
天天上网。
举头三尺有神明,
可不兴干坏事哈!
代码写得好,
牢饭吃到饱。
切记!
切记!
切记!