2015-08-30 4 views
1

Использование Javascript (без JQuery) Я ищу, чтобы получить минимальный и максимальный IP-адреса в префиксе CIDR IPv6.Javascript вычисляет диапазон IPv6 от префикса CIDR

Например, 2001:280::/32 будет выводить 2001:280:0:0:0:0:0:0 и 2001:280:ffff:ffff:ffff:ffff:ffff:ffff.

Как это сделать? Заранее спасибо!

+0

вы заканчивать https://github.com/franksrevenge/IPSubnetCalculator? –

+1

@MatthewVita, похоже, работает только с адресами IPv4. – Jacob

+0

Я вижу это сейчас: * (Я считаю, что нашел решение для вас (см. Мой ответ). –

ответ

0

Предполагая, что вы Node и NPM установлены:

$ touch index.js 
$ npm init 
$ npm i --save ip-address 
$ vim index.js 

var v6 = require('ip-address').v6; 

var addr = new v6.Address('2001:280::/32'); 

console.log(addr.parsedAddress.join(':')); 
console.log(addr.endAddress().address); 

$ <esc>:wq 
$ node index.js 
2001:280:0:0:0:0:0:0 
2001:0280:ffff:ffff:ffff:ffff:ffff:ffff 

не кажется Там быть пакет облицовочный браузера, так что я предложил бы использовать Browserify (http://browserify.org/), чтобы получить эту работу или форк проект и все прочее в один файл, чтобы вы могли запускать его в своем браузере (конечно, без кода узла).

+0

Обратите внимание, что это фактически не вычисляет верхний предел. IPv6 позволяет помещать «все» MAC-адреса 2^48 на один/64, но даже если вы можете это сделать, вы не можете сделать это дважды, потому что, как только вы подключили их все к одному, для других сетей не осталось. Поэтому теоретический верхний предел для/64 примерно 2^48, для а/48 также 2^48, а для a/32 это то же самое 2^48. Это на практике означает, что IPv6 свободен от определенных видов ограничений, и подсчет этих ограниченных ресурсов не имеет смысла – arnt

+0

@arnt, в то время как я согласен с тем, что 18 квинтиллионов адресов на/64 является смешным числом, ваши аргументы неверны. IPv6 разрешает любое количество IPv6-адресов на интерфейс (MAC-адрес), поэтому теоретически вы можете использовать все доступные адреса на а/64, хотя вы не могли прожить достаточно долго, чтобы получить их все assi GNED. IPv6 также преобразует 48-разрядный MAC в 64-разрядное число при использовании SLAAC, а IEEE обновил 48-битный MAC с новым 64-разрядным EUI. Конечно, сегодня нет никакого способа использовать каждый адрес в/64, но IPv6 предназначен для того, чтобы иметь место для будущего. –

+0

О, право. По какой-то причине я думал, что речь идет о устройствах, а не адресах. Тем не менее, ответ остается «бессмысленным, потому что достаточно», просто с разными рассуждениями. – arnt

0

Попробуйте пакет ip6 НПМ: https://www.npmjs.com/package/ip6

ip6 способствует нормализации, сокращайте, делить подсети, генерировать случайные подсети/узлы и рассчитать диапазон размеров подсети IPv6.

let ip6 = require('ip6'); 
console.log(ip6.range('2001:280:0:0:0:0:0:0', 32)); 
{ start: '2001:0280:0000:0000:0000:0000:0000:0000', 
    end: '2001:0280:ffff:ffff:ffff:ffff:ffff:ffff', 
    size: 7.922816251426434e+28 } 

Или в командной строке:

ip6 -R 2001:280:0:0:0:0:0:0 32 
{"start":"2001:0280:0000:0000:0000:0000:0000:0000","end":"2001:0280:ffff:ffff:ffff:ffff:ffff:ffff","size":7.922816251426434e+28} 
Смежные вопросы