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

Everless 2026-06-07 00:23 1



手里有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 升级不用动你的协议层。






最新回复 (2)
  • hasagie 06-07 01:13
    1

    意思是可以 本地>香港>日本>美国>订阅的节点?

  • Everless 楼主 06-07 01:16
    2

    你要想绕一圈这么弄也可以,作用就是让流量走在平台设计的路径,你想的话可以让流量绕地球两圈

* 帖子来源Linux.do
返回