我用 go 做了一个类似 tor 去中心化多跳加密代理项目 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
chenjia404

我用 go 做了一个类似 tor 去中心化多跳加密代理项目

  •  1
     
  •   chenjia404
    chenjia404 3 月 14 日 1586 次点击
    这是一个创建于 40 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近自己做了实验性质的项目,想发出来和大家交流一下,也看看有没有人感兴趣一起讨论。

    这个项目可以简单理解成:

    一个类似 Tor 思路的多跳代理网络,但我不想走 Tor 那种中心化节点目录的路线,而是希望节点发现、节点广播、节点加入网络这部分尽量做成去中心化

    我现在在做的整体方向大概是这样:

    • 每个节点启动后,本地直接提供一个 SOCKS5 代理

    • 节点分成两类角色:

      • Relay (中继节点)
      • Exit (出口节点)
    • 本地应用流量先进入本地 SOCKS5 ,再进入这个网络

    • 每个节点都是中继,但是出口节点需要手动开启。

    • 目前支持的路径思路包括:

      • Local -> Exit
      • Local -> Relay -> Exit
      • 后面会继续扩展多跳
    • 整体理念上有点像 Tor:

      • 多跳转发
      • Relay 和 Exit 分工
      • 客户端本地建电路
    • 但一个比较重要的区别是:

      • Tor 的节点目录本质上是中心化的
      • 我这个项目希望尽量不依赖中心目录,而是通过节点广播、去中心化发现、节点本地缓存等机制来做

    目前已经实现的功能:

    1. 去中心化加密多跳代理

    • 自动寻找网络的节点
    • 多跳分层加密(让 Relay 只知道下一跳,看不到最终目标)
    • 电路池
    • 自动重试与路径切换

    2. web 的控制台

    • 配置出口选择,你可以选择指定国家或者排除指定国家的出口节点
    • 配置出口政策,你可以只给一些服务提供出口网络。

    3. 少量测试节点

    • 数个 Relay 和 Exit

    我做这个项目的出发点主要是:

    • 想做一个使用 go 语言的多跳加密代理原型
    • 想尝试一下: 如果不依赖 Tor 那种中心化目录,而是尽量做去中心化节点发现,这条路线能不能走通
    • 也想看看在 libp2p / 自定义电路协议 / 本地 SOCKS5 Agent 这套组合下,能不能做出一个比较像样的系统

    目前这个项目还比较早期,更偏:

    • 协议实验
    • 网络架构设计
    • 工程验证

    还不算成熟产品。

    如果大家感兴趣,我后面也可以继续整理一些内容,比如:

    • 架构图
    • 协议设计文档
    • 配置示例
    • 测试版仓库

    也想听听大家看法,比如:

    • 这种项目你们最在意的是匿名性、稳定性,还是运维能力?
    • 如果不走中心化目录,节点发现这块你们觉得最难的点会是什么?
    • 客户端出口选择和出口运营者策略这两个层次,这样拆分是不是合理?

    GitHub: https://github.com/chenjia404/meshproxy

    12 条回复    2026-03-15 22:45:44 +08:00
    zhang666
        1
    zhang666  
       3 月 14 日 via iPhone
    怎么发现节点?无无中心无公网太难了,除非做 ipv6 不过也难
    cyp0633
        2
    cyp0633  
       3 月 14 日
    如何避免 honeypot 呢
    chenjia404
        3
    chenjia404  
    OP
       3 月 14 日
    @zhang666 #1 节点是基于 libp2p ,先连接引导节点,然后通过 dht 寻找节点,目前已经有一些节点在运行了,启动一分钟内就可以找到几个节点。
    chenjia404
        4
    chenjia404  
    OP
       3 月 14 日
    @cyp0633 #2 无法避免,类似 tor 推荐使用 https 这样的加密服务。
    surfyhou
        5
    surfyhou  
       3 月 15 日
    匿名性方面,考虑加上每个节点自动销毁机制吗?还有就是运维本身的匿名性
    piaomiao0315
        6
    piaomiao0315  
       3 月 15 日
    已 star ,期待后续完善与更新
    zisen
        7
    zisen  
       3 月 15 日
    楼主人在国内吗,虽然只是实验性质,但还是小心喝茶
    uid106
        8
    uid106  
       3 月 15 日 via iPhone
    考虑 socks5 + TLS 吧,并且 socks5 的 UDP 协商最好也魔改一下变成和 TCP 同端口(会增加一层会话管理)
    mfuuzy
        9
    mfuuzy  
       3 月 15 日
    @zhang666 IPv6 是一个不错的方案,不过现在很多家庭宽带虽然支持 IPv6 了,但是猫默认是有防火墙的,外面无法请求进来
    chenjia404
        10
    chenjia404  
    OP
       3 月 15 日
    @surfyhou #5 传输层加密了,然后就是出口节点这里可能能拿到数据,但是如果是使用 https 类似的服务就是安全的。
    chenjia404
        11
    chenjia404  
    OP
       3 月 15 日
    @piaomiao0315 #6 今天发布了第一个可用版本,下载启动就可以使用代理了。
    chenjia404
        12
    chenjia404  
    OP
       3 月 15 日
    @zisen #7 不在。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2828 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 72ms UTC 13:42 PVG 21:42 LAX 06:42 JFK 09:42
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86