惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 李国宝

2206年最佳边缘计算集群方案:Tailscale + k3s 谁不想要自己的Tailscale内网呢~ 腾讯云API网关废了?集群开源方案平替 Github Copilot 比在座各位更会写代码。jpg .NET Core + React Antd Pro脚手架 【爬虫系列】2. 打开App逆向“潘多拉魔盒” Ratel:一直站在Android逆向巅峰的平头哥 【爬虫系列】1. 无事,Python验证码识别入门 【爬虫系列】0. 无内鬼,破解前端JS参数签名 利用容器逃逸实现远程登录k8s集群节点 边缘计算k8s集群SuperEdge初体验 能动手绝不多说:开源评论系统remark42上手指南 一次依赖注入不慎引发的一连串事故 反手来个K8S入门到跑路 MySQL Online DDL导致全局锁表案例分析 .NET Core教程--给API加一个服务端缓存啦 任务队列和异步接口的正确打开方式(.NET Core版本) .NET Core中使用RabbitMQ正确方式 - 李国宝 - 博客园 .NET Core单元测试之搞死开发的覆盖率统计(coverlet + ReportGenerator )
来一打自建IP Proxy玩玩之Majora
李国宝 · 2023-06-24 · via 博客园 - 李国宝

前言:为什么需要它~

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主机环境

下载地址: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 拨号场景

# [必选] 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 或者 服务安装:手动部署

务必设置代理账号密码

- 务必!!!

- 务必!!!

- 务必!!!

最后。

好好学习,

天天上网。

举头三尺有神明,

可不兴干坏事哈!

代码写得好,

牢饭吃到饱。

切记!

切记!

切记!