Javascript рассчитать диапазон IPv6 из префикса CIDR
Используя Javascript (без JQuery) я ищу, чтобы получить минимальный и максимальный IP-адреса в префиксе CIDR IPv6.
Например, 2001:280::/32
будет выводить 2001:280:0:0:0:0:0:0
а также 2001:280:ffff:ffff:ffff:ffff:ffff:ffff
,
Как я могу это сделать? Заранее спасибо!
2 ответа
Предполагая, что у вас установлены 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/), чтобы заставить его работать, или разветвить проект и собрать все в один файл, чтобы вы могли запустить его в своем браузер (без учета кода, специфичного для узла, конечно).
Попробуйте ip6
пакет npm: 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}