V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
chenjia404
V2EX  ›  分享创造

写了一个 p2p 的隧道程序,自带流量特征混淆

  •  
  •   chenjia404 ·
    chenjia404 · 2023-06-22 14:40:12 +08:00 · 2209 次点击
    这是一个创建于 520 天前的主题,其中的信息可能已经有所发展或是发生改变。

    go-p2ptunnel

    使用 libp2p 建立 tcp 隧道(不支持 udp),底层传输可以使用 quic 、tcp 、package websocket 、webtransport 实现,使用 noise 协议加密传输,自带 nat ,可以多层组合使用。

    如果在没有公网 ip 的情况下,可以使用节点 id 进行连接,如果有情况的直接指定 ip 和通讯协议进行连接。

    节点私钥文件在当前目录下,文件名后缀是 .key ,默认是 user.key ,删除后重启程序就会自动创建新的节点 id 。

    参数说明

    字段 类型 说明
    l ip 监听或者转发的地址,如果没有设置 id ,就是转发这个地址,如果设置了,就是把远程端口映射到本地这个地址,默认值 127.0.0.1:10086
    id multiaddr 连接远程服务 id
    p2p_port ip p2p 使用的端口,也是监听其它节点连接的端口,默认 4001 ,会自动进行 nat ,但是可能需要您进行端口映射。如果是 0 ,就会选择随机端口
    nodisc bool 禁止广播提高性能,连接节点必须使用带 ip 和端口的链接
    user string 指定使用本地的哪一个 key 文件
    update bool 从 GitHub 更新最新版,会验证升级包签名、sha512
    max_peers int 最大连接数,默认 500

    流量特征

    如果没有关闭节点广播(-nodisc),节点会和大量节点进行通信,就如同一个普通的 p2p 程序,一天时间可能会和几千个 ip 通信,但是每个 ip 使用的流量在几十 kb 到几百 kb 左右。

    使用案例

    如果你的的公司或者学校网络限制了一些网站使用,那么你搭建一个隧道,连接到服务器就可以无限制的使用了。在公司网管来看,你只是使用了一个普通的 p2p 程序,而且连接了多个 ip 。

    和服务器连接的过程,你可以使用 quic 、tcp 、websocket 、webtransport 这几种协议的任意一种,根据你的网络情况来选择。在连接 id 构建上,如果只是服务器节点 id ,就不固定使用的网络连接方式,如果用 tcp 的连接地址就会使用 tcp 链接,也可以用 websocket 格式的连接地址。

    https://github.com/chenjia404/go-p2ptunnel

    2 条回复    2023-06-25 17:11:38 +08:00
    rapiz
        1
    rapiz  
       2023-06-25 12:35:13 +08:00
    用 libp2p 实现和现有的内网穿透工具相比,有什么不同和优势呢?
    chenjia404
        2
    chenjia404  
    OP
       2023-06-25 17:11:38 +08:00
    @rapiz #1 协议的流量特征和其它 libp2p 的程序一样,不容易被识别,同时可以利用 libp2p 的网络降低相关 ip 和端口的特征,例如一个 ip 一个用户连接,和一个 ip 和多个 p2p ip 连接。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2640 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:21 · PVG 19:21 · LAX 03:21 · JFK 06:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.