目前我需要能够区分私人地址和网络可访问地址。
我需要能够测试以下内容:
您将获得一个接口上的ipv6列表,并且需要知道哪些地址可以通过Web访问。这些地址都不可能是非私有的。如果地址被更改,最好能够跟踪哪一个(我可以在我有私有地址测试方法之后解决这个问题)。
这是用node.js
上的javascript编写的答案 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并不是很了解......但我正在搞清楚。顺便说一句,我发现对不同范围的讨论很有用:
答案 1 :(得分:0)
我正在使用以下假设:
......有了这些假设,它应该相当容易。根据{{3}}(链接to this page),您只需测试地址以fd1
开头,可能使用正则表达式/^fd1/
,以确认它是私有的地址。
同样,根据here,您可以针对环回地址测试0:0:0:0:0:0:0:1
或::1
。