前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >来一打自建IP Proxy玩玩之Majora

来一打自建IP Proxy玩玩之Majora

原创
作者头像
李国宝
发布2023-06-24 13:19:27
2770
发布2023-06-24 13:19:27
举报

前言:为什么需要它~

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

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

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

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

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

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

只是....

后来项目停止更新了,

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

于是也没继续折腾了。

再然后,

后来看到了“新玩具”,

于是又折腾了一下...

新玩具是:

Majora-代理IP池建设系统​majora.iinti.cn/majora-doc/

代码语言:javascript
复制
使用简单

一键完成代理服务搭建,任意网络设备运行即加入代理ip服务,
不需要复杂的组网络、网络拓扑配置、终端配置等。
内嵌内网穿透,无论您的网络设备身在何处,只要可以上网即可提供代理IP资源

多种网络终端

支持pc(Windows、Linux、macOS),支持Android手机,
支持路由器等网络设备,支持API集成到各种应用软件中

管理和控制

统一的后台系统、多用户体系、报表和用量控制、设备监控、设备状态查看、
远程重播和控制、供应端和消费端计量等

可靠和性能

支持完整的http/https/socks5代理协议,
支内存毫秒级别的失败隧道路由切换、异步NIO和内存复用,
实现海量高吞吐带宽数据转发(已验证单台服务器200M带宽无性能问题)。

好像...

对内支持连接各种设备,

对外直接提供隧道代理。

讲得挺厉害的哦。

看看咋样~

服务起手

- 提前安装Docker

代码语言:javascript
复制
# 服务器: 安装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....

很有趣的思路。

代码语言:javascript
复制
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的测试服务器

代码语言:javascript
复制
curl -vvv -x majora:majora@majora.iinti.cn:30000 https://myip.ipip.net

测试结果

代码语言:javascript
复制
➜  ~ 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 客户端重播脚本支持

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

代码语言:javascript
复制
# [必选] 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永久存活,并且开机自启动。

代码语言:javascript
复制
./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 或者 服务安装:手动部署

务必设置代理账号密码

- 务必!!!

- 务必!!!

- 务必!!!

最后。

好好学习,

天天上网。

举头三尺有神明,

可不兴干坏事哈!

代码写得好,

牢饭吃到饱。

切记!

切记!

切记!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:为什么需要它~
  • 服务起手
  • “初始化系统”
  • 安装配置App:Android客户端
  • 测试代理功能
  • 其他客户端
  • 附加彩蛋一:App重播
  • 附加彩蛋二:VPS 客户端重播脚本支持
  • 附加彩蛋三:Windows客户端
  • 其他注意项
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档