logo NodeSeekbeta

【开源】realm全功能一键转发脚本,流量统计,MPTCP,负载均衡权重,故障转移,备注,导出/导入,搭建隧道

单纯的闲聊,集思广益,分享有趣好玩的想法,欢迎加入tg交流群

🚀 网络转发管理脚本 - 集成官方 realm 最新版全部功能,网络链路测试,端口流量犬,保持极简本质,可视化规则操作提高效率,纯脚本构建完整中转生态

一个开箱即用、轻量可靠、灵活可控的 realm 网络转发全功能管理可视化脚本,内含丰富的中转功能,构建完整生态

🧭 开源地址:https://github.com/zywe03/realm-xwPF (强烈建议读readme)

✨ 核心特性

  • 快速体验 -一键安装快速轻量上手体验网络转发

  • 故障转移 - 使用系统工具,完成自动故障检测,保持轻量化

  • 负载均衡 - 支持轮询、IP哈希等策略,可配置权重分配

  • 搭建隧道 - 双端realm架构支持 TLS,ws,wss,搭建隧道

  • 规则备注 - 清晰的备注功能,不再需要额外记忆

  • 端口流量犬 - 统计端口流量,控制端口限速,限流,可设置通知方式

  • 直观配置系统MPTCP - 清晰的展示MPTCP界面

  • 网络链路脚本 - 测试链路延迟、带宽、稳定性,大包路由情况(基于hping3 & iperf3 & nexttrace & bgp.tools

  • 一键导出 - 打包全部文件为压缩包自由迁移(包括备注等等信息完全迁移)

  • 一键导入 - 识别导出的压缩包完成自由迁移

  • 一键识别批量导入 自写realm的规则配置,方便管理和维护自己的规则集

  • 智能检测 - 自动检测系统架构、端口冲突,连接可用性

  • 完整卸载 - 分阶段全面清理,“轻轻的我走了,正如我轻轻的来”

  • 原生Realm全功能 - 同步支持最新版realm的所有原生功能

  • tcp/udp协议

  • ws/wss/tls 加密解密并转发

  • 单中转多出口

  • 多中转单出口

  • Proxy Protocol

  • MPTCP

  • 指定中转机的某个入口 IP,或指定某个出口 IP (适用于多IP情况和一入口多出口和多入口一出口的情况)

  • 指定中转机的入口网卡,或指定某个出口网卡 (适用于多网卡情况)

  • 更多玩法参考zhboner/realm

脚本界面预览

xwPF.sh realm转发脚本

81ce7ea9e40068f6fda04b66ca3bd1ff.gif

端口流量犬

cc59017896d277a8b35109ae44eac977.gif


🚀 快速开始

一键安装

wget -qO- https://raw.githubusercontent.com/zywe03/realm-xwPF/main/xwPF.sh | sudo bash -s install

网络受限使用加速源,一键安装

wget -qO- https://v6.gh-proxy.org/https://raw.githubusercontent.com/zywe03/realm-xwPF/main/xwPF.sh | sudo bash -s install

若加速源失效,可多次重试或更换其他具有内置加速功能的代理源

  • 最后一个功能后面补坑吧

    "interface": "lo",
    "listen_interface": "lo"
    

    xhj011

    🗺️ 示意图理解不同场景下工作原理

    1. 单端realm架构只负责转发(常见)

    中转机安装realm,出口机安装业务软件

    中转机realm只负责原模原样把设置的监听IP:端口收到的数据包进行转发到出口机,加密解密由业务软件负责

    所以整个链路的加密协议由出口机业务软件决定

    e3c0a9ebcee757b95663fc73adc4e880.png

    1. 双realm架构搭建隧道

    中转机安装realm,出口机要安装realm和业务软件

    在realm和realm之间多套一层realm支持的加密传输

    所以中转机realm选择的加密,伪装域名等等,必须与落地机一致,否则无法解密

    4c1f0d860cd89ca79f4234dd23f81316.png

    1. 负载均衡+故障转移
    • 同一端口转发有多个出口机
      a9f7c94e9995022557964011d35c3ad4.png

    • 前置>多中转>单落地
      2cbc533ade11a8bcbbe63720921e9e05.png

    • 轮询模式 (roundrobin)

    不断切换规则组里的出口机

    • IP哈希模式 (iphash)

    基于源 IP 的哈希值,决定流量走向,保证同一 IP 的请求始终落到同一出口机

    • 权重即分配概率

    • 故障转移

    检测到某个出口故障,暂时移出负载均衡列表,恢复之后会自动添加进负载均衡列表

    原生realm暂不支持故障转移

    • 脚本的实现原理
    1. systemd定时器触发 (每4秒)
       ↓
    2. 执行健康检查脚本
       ↓
    3. 读取规则配置文件
       ↓
    4. 对每个目标执行TCP连通性检测
       ├── nc -z -w3 target port
       └── 备用: telnet target port
       ↓
    5. 更新健康状态文件(原子更新)
       ├── 成功: success_count++, fail_count=0
       └── 失败: fail_count++, success_count=0
       ↓
    6. 判断状态变化
       ├── 连续失败2次 → 标记为故障
       └── 连续成功2次+冷却期120秒(避免抖动频繁切换) → 标记为恢复
       ↓
    7. 如有状态变化,创建更新标记文件
    

    客户端可使用指令while ($true) { (Invoke-WebRequest -Uri 'http://ifconfig.me/ip' -UseBasicParsing).Content; Start-Sleep -Seconds 1 }while true; do curl -s ifconfig.me; echo; sleep 1; done 实时监听IP变化情况

    1. 端口转发 vs 链式代理(分段代理)

    容易搞混的两个概念

    简单理解

    端口转发只负责把某个端口的流量转发到另一个端口

    链式代理是这样

    分成了两段代理链,所以又称为分段代理,二级代理(有机会再细讲配置)

    各有各的优点看使用场景 | 注意有的机不允许安装代理(遵循当地法律法规) | 不过某些场景链式会很灵活

    链式代理 (Chained Proxy) 端口转发 (Port Forwarding)
    链路的机都要安装代理软件 中转机安装转发,出口机安装代理
    配置文件复杂度较高 配置文件复杂度低(L4层转发)
    会有每跳解包/封包开销 原生 TCP/UDP 透传,理论上更快
    出站控制分流更精确(每跳配置出口) 难出站控制
  • @sgm #142
    github点一颗小星星也是不错的鼓励 yct001 评论也可以点鸡腿噢(明示) xhj002

  • 可以加个流量限制

  • @zywe #46

    :~# curl -fsSL https://raw.githubusercontent.com/zywe03/realm-xwPF/main/xwPF.sh | sudo bash -s install
    === xwPF Realm全功能智能安装器 v0.63.0 ===
    检测到系统: Debian GNU/Linux 12
    正在检查必备依赖工具...
    ✓ curl 已安装
    ✓ wget 已安装
    ✓ tar 已安装
    ✓ systemctl 已安装
    ✓ grep 已安装
    ✓ cut 已安装
    ✓ bc 已安装
    ✓ nc 已安装
    所有必备工具已安装完成
    正在安装脚本到系统...
    正在从GitHub下载脚本...
    ✓ 脚本下载并安装成功
    ✓ 快捷命令已创建: pf
    === 脚本安装完成! ===
    正在检查 realm 安装状态...
    检测到虚拟化环境: KVM虚拟机
    未检测到 realm 安装,开始下载安装...
    检测本地 realm 压缩包...
    未发现本地压缩包,使用在线下载...
    获取最新版本信息...
    错误: 无法从GitHub获取最新版本号
    

    已添加的。 可能是少了个github服务器?

    cat >> /etc/hosts << EOF
    # https://danwin1210.de/github-ipv6-proxy.php
    2a01:4f8:c010:d56::2 github.com
    2a01:4f8:c010:d56::3 api.github.com
    2a01:4f8:c010:d56::4 codeload.github.com
    2a01:4f8:c010:d56::5 objects.githubusercontent.com
    2a01:4f8:c010:d56::6 ghcr.io
    2a01:4f8:c010:d56::7 pkg.github.com npm.pkg.github.com maven.pkg.github.com nuget.pkg.github.com rubygems.pkg.github.com
    EOF
    
  • @tof #50
    正在排查,感谢反馈,解决问题了,第一时间回复
    正常来说github是这样,但是IPv6 地址与 GitHub 相关域名直接绑定在本地 hosts 文件确实是能访问api.github.com,使用ping6 api.github.comcurl -6 https://api.github.com/repos/zhboner/realm/releases/latest可以测试

    GitHub 域名 用途 IPv6 支持情况
    raw.githubusercontent.com 用于存放脚本/文件等原始资源 ✅ IPv6 支持良好
    github.com 网页主站 ✅ 支持 IPv6
    api.github.com 提供版本号等 REST API ⚠️ 部分地区不稳定,有时不支持 IPv6,尤其是 v6-only VPS

    已经解决

  • 支持技术贴

  • 牛逼帮顶

  • 牛逼

  • 这个必须顶了 xhj016

  • nb

  • 999

  • 不明觉厉😯

  • 无敌了

  • 前排没了

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有43590位seeker

🎉欢迎新用户🎉