js-IPFS 0.54.0为您的IPFS节点提供UPnP NAT穿孔功能

2021-02-04 15:47:40

js-IPFS@0.54.0 使用启用了UPnP的路由器实现NAT遍历,以改善连接性,但是还需要在浏览器中进行回购升级。

  亮点

  js-IPFS@0.54.0 使用启用了UPnP的路由器实现NAT遍历,以改善连接性,但是还需要在浏览器中进行回购升级。


  NAT UPnP穿

  在家庭网络上运行IPFS节点时,通常位于NAT防火墙后面。这些类型的防火墙通常在家庭网络上使用,以解决全球IPv4地址短缺的问题。

  通常,当这种基础结构位于您和远程计算机之间时,网络外部的计算机就不可能与节点建立连接。使用IPFS时,外部计算机必须能够连接到您的计算机,这是必不可少的,否则远程节点无法获取节点上存储的内容。

  此问题并非IPFS独有,它还扩展到了任何P2P网络和许多在线游戏。值得庆幸的是,有一个解决方案:如果您的路由器支持UPnP,并且启用了该功能,则计算机上的进程可以与该路由器通信,并要求它打开一个外部端口,并将发送到该端口的所有流量转发到您的计算机。打开端口后,我们可以随时通过libp2p标识协议通知连接的对等方,他们可以根据需要在此外部端口上打开连接。

  js-IPFS@0.54.0默认情况下启用UPnP NAT穿孔,但仅在路由器上启用UPnP时才有效。启用此操作的说明因制造商而异,因此请参阅路由器的文档以获取有关如何启用的更多信息。


  如果一切正常,jsipfs id在守护程序启动后不久,您应该开始在输出中看到可外部寻址的多地址,而无需进行任何额外配置:

  $ jsipfs id

  {

  "id": "QmT2aN...",

  "publicKey": "CAASpgIwggEiMA0...",

  "addresses": [

  "/ip4/127.0.0.1/tcp/4002/p2p/QmT2aN...",

  "/ip4/127.0.0.1/tcp/4003/ws/p2p/QmT2aN...",

  "/ip4/192.168.2.50/tcp/4002/p2p/QmT2aN...",

  "/ip4/81.132.237.123/tcp/55170/p2p/QmT2aN..."  // <-- externally addressable!

  ],

  // ...other fields here

  }

  如果不想启用穿孔,可以将Swarm.DisableNatPortMap配置键设置为true:

  $ jsipfs config --json Swarm.DisableNatPortMap true


  js升级

  js-IPFS@0.54.0在浏览器中使用最新版本的level-js。level-js@4.x.x及以下版本支持将键存储为strings或Uint8Arrays,但level-js@5.x.x仅支持与leveldownNode.js一致的Uint8Arrays 。

  这意味着对于在浏览器中运行js-IPFS的用户来说,必须进行数据库迁移(Node.js不受影响)。

  第一次加载js-IPFS@0.54.0到以前使用过的网页上时,此迁移应自动进行js-IPFS@0.53.0。

  您可以通过传递repoAutoMigrate: false给IPFS构造函数来禁用此功能:

  const node = await IPFS.create({

  repoAutoMigrate: false

  })

  尽管这样做,您应该为用户提供某种升级方式,因为level-js@5.x.x它们看不到任何非Uint8Arrays的数据库密钥。


  新功能

  • 启用upnp nat打孔(#3426)

  • 在ipfs-http-client(#3293)中支持远程固定服务(ba240fd)


  重大变化

  • ipfs-repo升级需要在浏览器中将仓库回购到v10

  • 更新webpack示例以使用v5(#3512)(c7110db),关闭#3511

  • 与isolateModules标志有关的问题(#3495)

  • 使用https代理处理https请求(#3490)

  • 更新部门(#3514)(061d77c)

  • 记录ipfs http客户端构造函数参数(#3478)

  查看js-IPFS项目路线图,其中包含标题功能,这些标题功能按我们希望它们登陆的顺序进行了组织。

  路线图中只标注了较大的功能,期望在路线图项目之间发布许多小的错误修正!

  • @achingbrain(60提交,24 PR,1问题,44评论)

  • @ acolytec3(1条评论)

  • @acostalima(2个PR,5条评论)

  • @andrew(1个公关)

  • @aphelionz(1条评论)

  • @cndolo(1条评论)

  • @ codecov-io(1条评论)

  • @CSDUMMI(1期)

  • @ david0178418(1条评论)

  • @ericspt(1期)

  • @FledgeXu(1期)

  • @geolffreym(1期,1条评论)

  • @Gozala(2次提交,1个PR,1个问题,9条评论)

  • @HexaField(1条评论)

  • @ hueimin426(1条评论)

  • @hugomrdias(11次提交,5个PR,1个问题,16条评论)

  • @icidasset(1 PR,7条评论)

  • @ikreymer(2条评论)

  • @jacobheun(2次提交,7条评论)

  • @ julien51(1条评论)

  • @lacker(1次提交,1个PR,1个问题,3条评论)

  • @lidel(1次提交,1个PR,4条评论)

  • @mburns(1次提交)

  • @ mtiger2k(2条评论)

  • @pestopancake(1期)

  • @ raphael10-collab(7个问题,12条评论)

  • @ rob-deutsch(1个公关)

  • @robertkiel(1期)

  • @samlior(1次提交,1个PR,2条评论)

  • @stale(2条评论)

  • @tymmesyde(1 PR,2期)

  • @valmack(1期,2条评论)

  • @ vasco-santos(50次提交,13个PR,2个问题,36条评论)

  • @vmx(3条评论)

  • @vogdb(1个PR,1个问题,4条评论)

  • @wemeetagain(1期)

  • @whydna(1条评论)


  您想为IPFS项目做贡献,又不知道如何做吗?好吧,有几个地方可以开始使用:

  • 检查js-IPFS存储库中help wanted标签的问题

  • 加入https://discuss.ipfs.io/上的讨论,并帮助用户找到答案。

  • 加入并参与其中!


  你有问题吗?

  最好的地方要问你关于IPFS的问题,它是如何工作的,以及你可以用它做的是在discuss.ipfs.io。我们也可以在#ipfsFreenode上的频道上找到。


最新推荐