来一打自建IP Proxy玩玩之Majora

前言:为什么需要它~

IP代理那么多,其实大家很多时候图省事都直接采购了。

反正蛇鼠有路,也没什么需要讲的,大家看着玩就好。

但是有时候还是需要更可控或者更优质的资源,

可能就得看下自建方案了。

 

某些朋友可能有印象,很久之前我玩过这个项目:

李国宝:Echo:代理IP系统“4G新纪元”

只是....

后来项目停止更新了,

我自己这边的需求也不多了,

于是也没继续折腾了。

 


再然后,

后来看到了“新玩具”,

于是又折腾了一下...

 

新玩具是:

 

 

使用简单

一键完成代理服务搭建,任意网络设备运行即加入代理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主机环境

下载地址:,

选择对应的系统版本,

点击下载或者复制对应的下载链接,

使用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 客户端重播脚本支持

PC主机环境:0x01 拨号场景

# [必选] 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客户端

PC主机环境:windows环境的启动和服务化

在windows环境下,如果将majora服务化,

则可以使得majora永久存活,并且开机自启动。

./service.exe install
./service.exe start;
./service.exe status;

 

其他注意项

majora-allInOne-latest

registry.cn-beijing.aliyuncs.com/iinti/common:majora-allInOne-latest

这个版本的镜像内置MySQL数据库,

切记请勿直接用于生产环境!!!

切记请勿直接用于生产环境!!!

切记请勿直接用于生产环境!!!

生产环境建议数据库和服务分离。

请参考: 服务安装:docker compose 或者 服务安装:手动部署

 

务必设置代理账号密码

- 务必!!!

- 务必!!!

- 务必!!!

 

 


最后。

 

好好学习,

天天上网。

 

举头三尺有神明,

可不兴干坏事哈!

 

代码写得好,

牢饭吃到饱。

 

 

切记!

切记!

切记!

posted @ 2023-06-24 13:04  李国宝  阅读(92)  评论(0编辑  收藏  举报