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}
Другие вопросы по тегам