如何识别node.js中的IPV6私有和环回地址?

时间:2014-01-30 02:31:41

标签: javascript node.js ipv6

目前我需要能够区分私人地址和网络可访问地址。

我需要能够测试以下内容:

您将获得一个接口上的ipv6列表,并且需要知道哪些地址可以通过Web访问。这些地址都不可能是非私有的。如果地址被更改,最好能够跟踪哪一个(我可以在我有私有地址测试方法之后解决这个问题)。

这是用node.js

上的javascript编写的

2 个答案:

答案 0 :(得分:3)

您正在寻找的是IPv6 范围:“网络可访问”是全球范围内的地址。范围在这里描述:

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

您可以自己解析地址 - 或者您可以节省一些时间并使用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并不是很了解......但我正在搞清楚。顺便说一句,我发现对不同范围的讨论很有用:

Link-local and global IPs on IPv6 interfaces

答案 1 :(得分:0)

我正在使用以下假设:

  • 您正在使用适当的标准来定义私人与网络可访问的
  • 出于我们的目的,网络可访问意味着不是私人的
  • 特别是,我们只对地址的格式感兴趣,而不是设备是否会在该地址实际响应

......有了这些假设,它应该相当容易。根据{{​​3}}(链接to this page),您只需测试地址以fd1开头,可能使用正则表达式/^fd1/,以确认它是私有的地址。

同样,根据here,您可以针对环回地址测试0:0:0:0:0:0:0:1::1