Network and IPAM
The record of every VLAN, subnet, IP address, DHCP pool and DNS zone you run — for your own network, and for every client network an MSP services.
The problem
The addressing plan is a spreadsheet. One tab per site, colour-coded by someone who left in 2022. Nobody knows which addresses in the 10.0.20.0/24 are actually free, so the new printer gets the one the backup server has held since March and both drop off the network on a Tuesday afternoon. When a client asks which VLAN their guest wifi is on, the answer takes a switch login and a guess.
What Solidlio does about it
Every prefix is stored as a CIDR with its host bits masked off, so one network is one row and a duplicate is refused at the point of entry. Every address is canonicalised before it is written, so 2001:db8::1 and its fully expanded form are the same address rather than two rows that will disagree forever. Utilisation is derived from the address rows on every read — not from a counter that drifts — and the arithmetic runs in arbitrary precision, so an IPv6 /64 reports 18,446,744,073,709,551,616 addresses instead of overflowing. Ask for the next free address and you get one that honours the network and broadcast reservations for IPv4, RFC 3021 for a /31, and nothing at all for IPv6, because IPv6 has no broadcast address.
Capabilities
| Capability | What it does |
|---|---|
| Subnet hierarchy | Nest prefixes to any depth; a child is validated as contained in its parent and the same version |
| Overlap detection | Refuses a prefix that partially overlaps another in the same organization, in either IP version |
| Dual stack | IPv4 and IPv6 throughout — /0 to /32, /0 to /128, including /31, /32, /127, /128 |
| Address allocation | Next-free lookup, single assign, or bulk-create up to 1,024 addresses in a bounded range |
| Live utilisation | Used, reserved and available derived from the rows on every read; percentages clamped to 0–100 |
| VLAN management | VID 1–4094 with role and status, grouped into named ranges, optionally pinned to a location |
| Port VLAN config | Access + voice VLAN, or native + tagged VLANs, on an individual physical port |
| DHCP scopes | Lease pools with exclusion ranges and MAC-to-address reservations, all validated against the subnet |
| DNS zones and records | Forward and reverse zones with SOA fields; A, AAAA, CNAME, MX, TXT, SRV, NS, PTR, SOA and CAA |
| Record validation | An A record must hold an IPv4 literal, MX must carry a priority, SRV a priority and a port |
| Conflict checking | Find every non-available record already holding an address or a MAC, in any notation |
| Subnet calculator | Network, broadcast, first and last host, subnet mask, wildcard mask, usable host count |
| Address map | A 256-cell status grid for any IPv4 /24 or longer |
Built for MSPs and their clients
An MSP and each of its clients are separate accounts with separate data. Each side documents its own network; the MSP additionally gets one view across every client it services.
| Organization | MSP | |
|---|---|---|
| Subnets and VLANs | Its own | Its own plus every client it services, filterable to one client |
| Who can edit | organization administrator | MSP technician and above |
| Address conflicts | Checked within the organization | Checked across every serviced client at once |
| Overlapping ranges | Refused within the organization | Two clients may both use 192.168.1.0/24 — that is expected |
| End users | Read-only network views on a location | — |
Servicing is resolved through the account-management link table, so an MSP brought in alongside an incumbent sees the client’s network without becoming its primary manager. An organizationId outside the serviced set is refused, and refused identically to one that does not exist.
How it works
- Record the VLAN — VID, name, role, and the site it belongs to. VIDs are unique per site.
- Carve the address space — enter a CIDR. Host bits are masked off, so
10.0.1.55/24is stored as10.0.1.0/24. Nest child prefixes under it; each is checked for containment and for overlap against every other prefix in the organization. - Allocate addresses — press “Assign next available” and Solidlio hands back the first genuinely free address, or bulk-create a block bounded by a start and an end.
- Hand out the rest by DHCP — define a pool inside the subnet, exclude the ranges you keep static, and pin the printers and controllers by MAC.
- Name it — create the zone and its records. Link an A, AAAA or PTR record to the address row it describes so the two live in one place.
- Watch the utilisation — the dashboard ranks the ten most-consumed subnets by used plus reserved, so a
/16at 98% surfaces ahead of an idle/30.
Correctness
Network arithmetic fails quietly, so it is tested explicitly rather than assumed:
- CIDR parsing and containment for both IP versions, including IPv4-mapped IPv6 (
::ffff:192.168.1.1) and IPv4-embedded forms. - Usable-host counts at every edge —
/30reserves two addresses,/31reserves none (RFC 3021),/32is a single host route, and IPv6 reserves nothing. - IPv6 text is canonicalised to RFC 5952 on write, so one address cannot become two rows.
- Capacity is arbitrary-precision throughout. A
/64is 2^64 addresses; nothing in the path narrows that to a floating-point number. - Overlap distinguishes nesting (legal, and the whole point of a hierarchy) from partial overlap (always a mistake).
- Percentages are clamped to 0–100, so a counter that drifted past capacity cannot render a bar wider than its track.
The org-scoped and MSP-scoped routers share one implementation of all of it, so the two portals cannot give different answers about the same subnet.
Editions
Network and IPAM carries no plan gate. What differs is portal and role:
| Capability | Customer | Organization | MSP |
|---|---|---|---|
| View subnets, VLANs, DNS | ●* | ● | ● |
| Create / edit / delete | — | organization administrator | ● |
| Cross-client view | — | — | ● |
| Cross-client conflict check | — | — | ● |
| Subnet calculator, tools | — | ● | ● |
* Read-only, reached from a location’s Network tab.
Security and tenancy
- Every subnet, address, VLAN, DHCP scope and DNS zone query is pinned to the caller’s organization, or for the MSP router to the set of organizations the account actually services.
- Uniqueness is per tenant, never global: two clients may legitimately both run
192.168.1.0/24, and both are stored. - Every client-supplied reference — VLAN, location, asset, network port, DHCP scope, parent subnet, linked IP address — is resolved inside the owning organization before it is persisted. A foreign identifier and a non-existent one produce the same reply.
- The MSP router is floored at MSP technician for reads as well as writes, so it cannot be used to bypass the organization administrator floor on the organization routes.
- Every mutation writes an audit entry naming the actor, the entity and the action.
Integrations
None. IPAM is a system of record: Solidlio does not push configuration to switches, DHCP servers or DNS servers, and does not discover devices on the wire. Addresses, VLANs and zones are entered, imported or edited by people.
A subnet you cannot trust is a spreadsheet with a login page.