IP range enumeration

ivre iprange enumerates the IPv4 addresses matching a selector (country, autonomous system, region, city, CIDR, explicit range, local file or all routable IPs) and renders them in one of four output shapes: count, ranges, CIDRs, or every individual address.

The country / AS / region / city selectors and the --routable selector rely on the MaxMind GeoIP CSV dumps and the APNIC BGP table populated by ivre ipdata --download; --network, --range and --file are pure arithmetic and work without any GeoIP data.

CLI

$ ivre iprange --network 192.0.2.0/24 --count
256

$ ivre iprange --network 192.0.2.0/30
192.0.2.0/30

$ ivre iprange --range 192.0.2.0 192.0.2.5 --cidrs
192.0.2.0/30
192.0.2.4/31

$ ivre iprange --country FR --count
83920880

$ ivre iprange --asnum AS3215 --cidrs --limit 3
2.3.0.0/16
2.4.0.0/14
2.8.0.0/13

$ ivre iprange --routable --count
3101530112

Country codes accept the same aliases as the rest of IVRE (UK resolves to GB; EU expands to every European Union member state). The --asnum flag accepts both ASnnnn and bare-integer forms; comma-separated lists are unioned (--country FR,DE, --asnum AS3215,AS12876).

The default output is --cidrs. --addrs enumerates every individual address and is capped at one million entries to guard against accidental multi-gigabyte stdout floods; --force removes the cap.

See the output of ivre help iprange for the full flag list.

Web API

The same selectors are exposed at /cgi/iprange:

$ curl 'http://localhost/cgi/iprange?network=192.0.2.0/30&output=count'
{"count": 4}

$ curl 'http://localhost/cgi/iprange?asnum=AS3215&output=cidrs&limit=3'
{"count": 20035071, "cidrs": ["2.3.0.0/16", "2.4.0.0/14", "2.8.0.0/13"]}

The web route exposes output=count / ranges / cidrs (default) / addrs; the json CLI shortcut is rejected over HTTP, where the response shape is already structured. output=addrs is bounded by the WEB_IPRANGE_ADDR_CAP configuration knob (default 100 000) so a /0 selector cannot serialise billions of strings into a single response.

MCP tool

The ip_range MCP tool exposes the same surface to LLM agents, with a tighter 10 000-address cap on output=addrs (to keep responses small enough to fit a model context window). Use output=cidrs (the default) or output=ranges for larger selections.