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

326 天前
 chenjia404

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

1948 次点击
所在节点    分享创造
2 条回复
rapiz
323 天前
用 libp2p 实现和现有的内网穿透工具相比,有什么不同和优势呢?
chenjia404
323 天前
@rapiz #1 协议的流量特征和其它 libp2p 的程序一样,不容易被识别,同时可以利用 libp2p 的网络降低相关 ip 和端口的特征,例如一个 ip 一个用户连接,和一个 ip 和多个 p2p ip 连接。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/950855

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX