2014-01-30 31 views
1

目前我需要能夠分辨出私人地址和可到達網頁之間的區別。如何識別node.js中的IPV6私有地址和回送地址?

我需要能夠測試以下:

現在給你的IPv6列表的接口上,並需要知道哪些地址是網絡訪問。這些地址都可能是非私人的。如果地址改變了,最好能夠跟蹤哪一個(我可以在使用私有地址測試方法之後找出它)。

這是用JavaScript編寫的node.js

回答

2

什麼你要找的是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

0

我有以下假設工作​​:

  • 你使用適當的標準來定義私有與Web - 可到達
  • 對於我們的目的,網絡可達意味着不是私人的
  • 特別是,我們只關心地址的格式,而不是設備是否真的會在該地址回覆

......有了這些假設,它應該相當容易。根據to this page(鏈接here),您只需測試地址以fd1開頭,或許使用正則表達式/^fd1/來確認它是私人地址。

同樣,根據this page,您可以測試0:0:0:0:0:0:0:1::1的環回地址。

+0

通過您的測試fe80地址是全球性的。 – arnt

+0

Ethan的回答比我的要好,我不能承認知道很多關於ipv6地址的知識,正如我的研究表明的那樣,這就是我所關聯的,儘管我現在意識到我認爲我誤解了我的第一個鏈接,因爲它似乎隨機生成一個合規的地址,而不是提供更一般的信息。 – Jason