如何识别node.js中的IPV6专用和回送地址?

目前我需要能够区分一个私人地址和一个可到达的网页。

我需要能够testing以下内容:

您在接口上获得了ipv6的列表,并且需要知道哪些地址可以通过networking访问。 这些地址都可能是非私有的。 如果地址改变了,最好能够跟踪哪一个(我可以通过私有地址testing方法计算出来)。

这是用javascript写在node.js上的

您要查找的是IPv6 范围 :“web reachable”是全球范围内的地址。 范围在这里描述:

http://en.wikipedia.org/wiki/IPv6_address#IPv6_address_scopes

你可以自己parsing地址 – 或者你可以节省一些时间并使用ipv6模块( npm install ipv6 --save ):

 var v6 = require('ipv6').v6; var addr = new v6.Address('2001:db8:85a3:8d3:1319:8a2e:370:7348'); if(addr.getScope()==='Global'){ console.log('valid global ipv6 address'); } 

免责声明:我不太了解IPv6,但是我正在计算出来。 顺便说一下,我发现对不同范围的讨论是有用的:

IPv6接口上的链路本地和全局IP

我正在做以下假设:

  • 你正在使用适当的标准来定义私人与networking可达
  • 为了我们的目的,web-reachable意味着不是私有的
  • 特别是,我们只关心地址的格式,而不是设备是否真的会在这个地址做出响应

…这些假设,应该是相当容易的。 根据这个页面 (链接在这里 ),你只需要testing地址以fd1开头,也许用正则expression式/^fd1/来确认它是一个私有地址。

同样,根据此页面 ,您可以testing0:0:0:0:0:0:0:1或者::1作为回送地址。