logo NodeSeekbeta

Iris —— Rust 写的多级转发面板控制平台

https://github.com/Everless321/Iris

手里有30多台vps 里面混合很多家宽和落地机,之前一直都用nftables控制端口转发,但是配置麻烦,而且流量监控起来也比较麻烦,同时我也需要一些探针的需求,但是哪吒和korami等探针对我来说有点多余,于是搓了Iris-Rust编写的多级转发控制平台。

技术栈:

  • master:axum(HTTP API + SLA + Prometheus)+ tonic(gRPC mTLS 控制面)+ SQLite
  • 节点:raw_tunnel(TCP)+ quic_tunnel(UDP datagram)
  • 前端:React + AntD
  • 单 binary,无外部依赖

核心特色

1. 任意 N 跳级联

path = [入口组, 中转组, 出口组],每跳一个节点组,组内多节点做负载均衡和 failover。

中国优化线路当入口、香港国际优化线路当中转、家宽落地当出口,或者中国优化直连家宽落地——两跳。

2. 每跳 4 种负载均衡可选

  • 加权轮询
  • 会话保持(Rendezvous 一致性哈希,节点上下线只影响该节点的会话)
  • 最小连接
  • 延迟最优(基于 5s 一次的健康探测)

每一条都可单独配置

3. 全链路 mTLS + 自动续签

master 启动自动生成根 CA,节点 enroll 时签发 365 天 cert,剩 30 天自动调 RenewCert申请新证书。

4. 极致速度优化 采用GCP 美 日 新加坡 三区域10G口机器测试

  • 采用splice(2)内核态转发,非加密场景传输速率几乎持平nftables和realm
并发 realm Iris (splice)
P=1(单流) 9.35 Gbps 9.56 Gbps
P=2 8.93 Gbps 8.93 Gbps
P=4 8.63 Gbps 9.51 Gbps
P=8 9.32 Gbps 9.54 Gbps

5. TCP + UDP 双协议,UDP 不走 TCP 隧道

Iris 的 UDP 走独立的 QUIC datagram 通道,纯用 QUIC 的多路复用和 mTLS。跨 区域(测试选择gcp的日美亚)实测丢包稳定 <2%

6. 实时流量统计

这块直接回应"探针需求":

  • 每条 forward 的 bytes_in / bytes_out 每 5 秒上报一次
  • /metrics 端点原生导出,可以直接丢给Grafana。
  • 节点延迟矩阵 + SLA 看板(每个节点相邻的 RTT 全量探测)

7. 一键节点安装 / 升级 / 卸载

装节点:

curl -fsSL https://raw.githubusercontent.com/Everless321/Iris/main/install.sh \
  | sudo bash -s -- --master https://<MASTER>:7080 --token <TOKEN>

升级 master 自己:

curl -fsSL https://raw.githubusercontent.com/Everless321/Iris/main/install.sh \
  | sudo bash -s -- --upgrade-master

卸载(自动备份证书和配置到 /tmp):

curl -fsSL https://raw.githubusercontent.com/Everless321/Iris/main/install.sh \
  | sudo bash -s -- --uninstall

脚本自动检测架构、下载 binary、enroll 兑换 mTLS 证书、写 systemd unit、起服务。** 30 秒一台。**

8. L4 透传

TCP / UDP 纯透传,上层跑 SS / Trojan / VLESS / Hysteria / WireGuard 对 Iris 完全透明。你换协议不用动 Iris,Iris 升级不用动你的协议层。

7562199d3766e4dedadd37481bddf2c0f81a9ec4_2_1380x774.png
3efd4033b60066ffa900eff1707b7ca643a54a46_2_1380x674.png
033c17e3aa75c67f0d528ef0da309e630e4ed44f_2_1380x642.png

  • @jofo #1
    sudo systemctl stop iris-master.service
    sudo systemctl disable iris-master.service
    sudo rm -f /etc/systemd/system/iris-master.service
    sudo systemctl daemon-reload
    sudo rm -rf /opt/iris

    手动执行下,之前没做master的卸载处理

你好啊,陌生人!

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

📈用户数目📈

目前论坛共有60051位seeker

🎉欢迎新用户🎉