使用 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 格式的连接地址。
1
rapiz 2023-06-25 12:35:13 +08:00
用 libp2p 实现和现有的内网穿透工具相比,有什么不同和优势呢?
|
2
chenjia404 OP @rapiz #1 协议的流量特征和其它 libp2p 的程序一样,不容易被识别,同时可以利用 libp2p 的网络降低相关 ip 和端口的特征,例如一个 ip 一个用户连接,和一个 ip 和多个 p2p ip 连接。
|