Simple utility to convert either CIDR notation, a hyphenated IP range, or two IP addresses to an array of the range of IP addresses.
$ npm i get-ip-range
- CIDR
"x.x.x.x/x"
- Range
"x.x.x.x-x.x.x.x"
- Two IPs
"x.x.x.x", "x.x.x.x"
- CIDR
"x:x:x:x:x:x:x:x/x"
- Range
"::x:x:x-::x:x:x"
- Two IPs
"::x:x:x", "::x:x:x"
N.B. Shorthand IPv6 is supported
import { getIPRange } from 'get-ip-range';
const ipv4CIDR = getIPRange('192.168.1.134/29');
const ipv4Range = getIPRange('192.168.1.128-192.168.1.135');
const twoIPv4 = getIPRange('192.168.1.128', '192.168.1.135');
// All return:
[
'192.168.1.128',
'192.168.1.129',
'192.168.1.130',
'192.168.1.131',
'192.168.1.132',
'192.168.1.133',
'192.168.1.134',
'192.168.1.135',
]
const ipv6CIDR = getIPRange('0:0:0:0:0:ffff:102:304/126');
const ipv6Range = getIPRange('::ffff:102:304-::ffff:102:307');
const twoIPv6 = getIPRange('::ffff:102:304', '::ffff:102:307');
// All return:
[
'::ffff:102:304',
'::ffff:102:305',
'::ffff:102:306',
'::ffff:102:307',
]
Errors
- If the supplied IP address(es) are invalid, the request will throw an error. Please handle errors appropriately.
- If there are more than the default maximum range (10000) or the environment variable (MAX_RANGE) IPs in the range, it will throw an error.
Joe Schofield 💻 |
Miosame 💻 |
João Antunes 💻 |
Chingiz Toimbetov 💻 |
yaniv-checkmarx 🐛 |
Stanislav Sizonenko 🐛 |