如何识别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
作为回送地址。