mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-11 21:10:29 +01:00
Show available IP addresses #212
Closed
opened 2025-12-29 16:19:27 +01:00 by adam
·
20 comments
No Branch/Tag Specified
main
update-changelog-comments-docs
feature-removal-issue-type
20911-dropdown
20239-plugin-menu-classes-mutable-state
21097-graphql-id-lookups
feature
fix_module_substitution
20923-dcim-templates
20044-elevation-stuck-lightmode
feature-ip-prefix-link
v4.5-beta1-release
20068-import-moduletype-attrs
20766-fix-german-translation-code-literals
20378-del-script
7604-filter-modifiers-v3
circuit-swap
12318-case-insensitive-uniqueness
20637-improve-device-q-filter
20660-script-load
19724-graphql
20614-update-ruff
14884-script
02496-max-page
19720-macaddress-interface-generic-relation
19408-circuit-terminations-export-templates
20203-openapi-check
fix-19669-api-image-download
7604-filter-modifiers
19275-fixes-interface-bulk-edit
fix-17794-get_field_value_return_list
11507-show-aggregate-and-rir-on-api
9583-add_column_specific_search_field_to_tables
v4.5.0
v4.4.10
v4.4.9
v4.5.0-beta1
v4.4.8
v4.4.7
v4.4.6
v4.4.5
v4.4.4
v4.4.3
v4.4.2
v4.4.1
v4.4.0
v4.3.7
v4.4.0-beta1
v4.3.6
v4.3.5
v4.3.4
v4.3.3
v4.3.2
v4.3.1
v4.3.0
v4.2.9
v4.3.0-beta2
v4.2.8
v4.3.0-beta1
v4.2.7
v4.2.6
v4.2.5
v4.2.4
v4.2.3
v4.2.2
v4.2.1
v4.2.0
v4.1.11
v4.1.10
v4.1.9
v4.1.8
v4.2-beta1
v4.1.7
v4.1.6
v4.1.5
v4.1.4
v4.1.3
v4.1.2
v4.1.1
v4.1.0
v4.0.11
v4.0.10
v4.0.9
v4.1-beta1
v4.0.8
v4.0.7
v4.0.6
v4.0.5
v4.0.3
v4.0.2
v4.0.1
v4.0.0
v3.7.8
v3.7.7
v4.0-beta2
v3.7.6
v3.7.5
v4.0-beta1
v3.7.4
v3.7.3
v3.7.2
v3.7.1
v3.7.0
v3.6.9
v3.6.8
v3.6.7
v3.7-beta1
v3.6.6
v3.6.5
v3.6.4
v3.6.3
v3.6.2
v3.6.1
v3.6.0
v3.5.9
v3.6-beta2
v3.5.8
v3.6-beta1
v3.5.7
v3.5.6
v3.5.5
v3.5.4
v3.5.3
v3.5.2
v3.5.1
v3.5.0
v3.4.10
v3.4.9
v3.5-beta2
v3.4.8
v3.5-beta1
v3.4.7
v3.4.6
v3.4.5
v3.4.4
v3.4.3
v3.4.2
v3.4.1
v3.4.0
v3.3.10
v3.3.9
v3.4-beta1
v3.3.8
v3.3.7
v3.3.6
v3.3.5
v3.3.4
v3.3.3
v3.3.2
v3.3.1
v3.3.0
v3.2.9
v3.2.8
v3.3-beta2
v3.2.7
v3.3-beta1
v3.2.6
v3.2.5
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.2.0
v3.1.11
v3.1.10
v3.2-beta2
v3.1.9
v3.2-beta1
v3.1.8
v3.1.7
v3.1.6
v3.1.5
v3.1.4
v3.1.3
v3.1.2
v3.1.1
v3.1.0
v3.0.12
v3.0.11
v3.0.10
v3.1-beta1
v3.0.9
v3.0.8
v3.0.7
v3.0.6
v3.0.5
v3.0.4
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v2.11.12
v3.0-beta2
v2.11.11
v2.11.10
v3.0-beta1
v2.11.9
v2.11.8
v2.11.7
v2.11.6
v2.11.5
v2.11.4
v2.11.3
v2.11.2
v2.11.1
v2.11.0
v2.10.10
v2.10.9
v2.11-beta1
v2.10.8
v2.10.7
v2.10.6
v2.10.5
v2.10.4
v2.10.3
v2.10.2
v2.10.1
v2.10.0
v2.9.11
v2.10-beta2
v2.9.10
v2.10-beta1
v2.9.9
v2.9.8
v2.9.7
v2.9.6
v2.9.5
v2.9.4
v2.9.3
v2.9.2
v2.9.1
v2.9.0
v2.9-beta2
v2.8.9
v2.9-beta1
v2.8.8
v2.8.7
v2.8.6
v2.8.5
v2.8.4
v2.8.3
v2.8.2
v2.8.1
v2.8.0
v2.7.12
v2.7.11
v2.7.10
v2.7.9
v2.7.8
v2.7.7
v2.7.6
v2.7.5
v2.7.4
v2.7.3
v2.7.2
v2.7.1
v2.7.0
v2.6.12
v2.6.11
v2.6.10
v2.6.9
v2.7-beta1
Solcon-2020-01-06
v2.6.8
v2.6.7
v2.6.6
v2.6.5
v2.6.4
v2.6.3
v2.6.2
v2.6.1
v2.6.0
v2.5.13
v2.5.12
v2.6-beta1
v2.5.11
v2.5.10
v2.5.9
v2.5.8
v2.5.7
v2.5.6
v2.5.5
v2.5.4
v2.5.3
v2.5.2
v2.5.1
v2.5.0
v2.4.9
v2.5-beta2
v2.4.8
v2.5-beta1
v2.4.7
v2.4.6
v2.4.5
v2.4.4
v2.4.3
v2.4.2
v2.4.1
v2.4.0
v2.3.7
v2.4-beta1
v2.3.6
v2.3.5
v2.3.4
v2.3.3
v2.3.2
v2.3.1
v2.3.0
v2.2.10
v2.3-beta2
v2.2.9
v2.3-beta1
v2.2.8
v2.2.7
v2.2.6
v2.2.5
v2.2.4
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.6
v2.2-beta2
v2.1.5
v2.2-beta1
v2.1.4
v2.1.3
v2.1.2
v2.1.1
v2.1.0
v2.0.10
v2.1-beta1
v2.0.9
v2.0.8
v2.0.7
v2.0.6
v2.0.5
v2.0.4
v2.0.3
v2.0.2
v2.0.1
v2.0.0
v2.0-beta3
v1.9.6
v1.9.5
v2.0-beta2
v1.9.4-r1
v1.9.3
v2.0-beta1
v1.9.2
v1.9.1
v1.9.0-r1
v1.8.4
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.7.3
v1.7.2-r1
v1.7.1
v1.7.0
v1.6.3
v1.6.2-r1
v1.6.1-r1
1.6.1
v1.6.0
v1.5.2
v1.5.1
v1.5.0
v1.4.2
v1.4.1
v1.4.0
v1.3.2
v1.3.1
v1.3.0
v1.2.2
v1.2.1
v1.2.0
v1.1.0
v1.0.7-r1
v1.0.7
v1.0.6
v1.0.5
v1.0.4
v1.0.3-r1
v1.0.3
1.0.0
Labels
Clear labels
beta
breaking change
complexity: high
complexity: low
complexity: medium
needs milestone
netbox
pending closure
plugin candidate
pull-request
severity: high
severity: low
severity: medium
status: accepted
status: backlog
status: blocked
status: duplicate
status: needs owner
status: needs triage
status: revisions needed
status: under review
topic: GraphQL
topic: Internationalization
topic: OpenAPI
topic: UI/UX
topic: cabling
topic: event rules
topic: htmx navigation
topic: industrialization
topic: migrations
topic: plugins
topic: scripts
topic: templating
topic: testing
type: bug
type: deprecation
type: documentation
type: feature
type: housekeeping
type: translation
Mirrored from GitHub Pull Request
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/netbox#212
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @kenspi on GitHub (Jul 13, 2016).
The current IPAM views only display addresses added to the system. It does not display available addresses within a subnet. It would be helpful to see all addresses within a subnet, noting each address' status. This could be similar to the "status" column on the /ipam/prefixes/ page, indicating "available", "reserved", or "active". Being able to filter the list based on status, and showing all addresses on a page rather than paginated would also be helpful.
@ambique commented on GitHub (Jul 14, 2016):
I think is one of missing features, for example if is some Virtual System or not Racked System but have one IP. is more like IP Management combined with VLAN.
Great platform!!!
@jeremystretch commented on GitHub (Jul 15, 2016):
Any IP address not listed should be considered available, since it has not been defined. What benefit would explicitly listing every IP address have? And how would you approach this for IPv6?
@kenspi commented on GitHub (Jul 16, 2016):
When allocating IP addresses to systems, seeing what addresses are available is helpful. This is especially true when deploying several systems at once that we'd like to be consecutively addressed. With our current IPAM (GestioIP) I can clearly see which addresses are unused, and how large the range is:

With NetBox we have to look closely to see what ranges are available by figuring out where the breaks are:

The ability to quickly identify reserved addresses versus used and unused would be helpful.
@gdouchet commented on GitHub (Jul 17, 2016):
An idea could be to group together IPs by block in order not to list all IPs (especially for IPv6). When aggregation is not possible, then list by smaller blocks or at the end individual IPs.
For my ISP usage, this would be a very very appreciated feature, in order to make choices when assigning IPs to customers.
@jeremystretch commented on GitHub (Jul 18, 2016):
So maybe between, say, .42 and .50, we'd inject a row reading "7 IPs available?" I think that would work fine for IPv4. We could employ a similar approach for IPv6 but I'll have to give it more thought.
@gdouchet commented on GitHub (Jul 18, 2016):
Or maybe aggregate at the most.
For example (.42 and .50 are used but free between the both):
192.168.0.42/32: used
192.168.0.43/32: free
192.168.0.44/30: free
192.168.0.48/31: free
192.168.0.50/32: used
Don't know if it could work...
@jeremystretch commented on GitHub (Jul 18, 2016):
I think I'd prefer to just state the range, since unlike prefix aggregates IP addresses are atomic units. Generating aggregates to cover the space takes up more room on the page and can also make it more difficult to determine how much free space there is.
@kenspi commented on GitHub (Jul 19, 2016):
I think this is a reasonable solution and reduces clutter.
@malaiam commented on GitHub (Jul 27, 2016):
I would also like to have this feature. And I agree with @jeremystretch 's range proposal, it will work both on IPv4 and IPv6. And this should be showed in a slightly different colour, light green or similar.
I also think this feature should be extended to VLANs within the group to show available VLANs as ranges. (btw, I belive the sites with no VLAN group should have an implicit default group, even if the user is not creating one).
Otherwise great work with the project Jeremy, I think it really is adding features other IPAMs don't have, even though a few more features could be welcomed.
@alexjhart commented on GitHub (Jul 28, 2016):
phpipam might be a source of inspiration. I think they do a great job with IPAM in general. Seems like netbox does a better job with DCIM and phpipam does a better job with IPAM, while they each try to cover both needs. It will be interesting to see where the two projects end up long term.
@anthraxau commented on GitHub (Aug 2, 2016):
Agreed, phpipam does handle that very well.
@jeremystretch commented on GitHub (Aug 2, 2016):
@alexjhart @anthraxau Could you elaborate on what you like about phpIPAM's view?
IMO this is a confusing way to show IP addresses. Why does the free range appear in the hostname column? I was thinking of something like this, but more similar to how we show unallocated child prefixes.
The block display, while visually appealing with small IPv4 networks, isn't very useful for prefixes larger than a /24 (and not at all with IPv6).
@anthraxau commented on GitHub (Aug 2, 2016):
In the regards to the first image I just like how the dhcp range is grouped. You're right other than that it behaves incorrectly.
The 2nd image is nice to see what's available at a quick glance but I agree that on a /22 or larger it would be painful I didn't even think of IPv6 :(
I've been using excel for a /22 and a few other prefixes so I'm feeling abit blessed with what you have currently.
I'm not sure if other people do this but I tend to group similar devices in groups on the prefix for example routers .250-254 core switches .240-249 VMware stuff .100-.149 etc and I usually colour code them for easy navigation of my spreadsheet so that I can quickly glance other it and see any gaps that are available. I've noticed you do this for rack devices. Would be nice to be able to enable this for the ipam
@alexjhart commented on GitHub (Aug 2, 2016):
I never considered the ranges to be under the hostname column. My eye accepted that as a range of available IPs and find the offset helpful in establishing the difference. More important than which column data shows up under is the display and grouping of unused space. Having a place holder with a different row color and a range displayed of the available space is adequate. I also like similar types of ranges being grouped, like the dhcp range shown here, though that is less important to me than showing available space. It just plays into the argument you had for the next screenshot where doing things that help with large subnets is important. This could streamline the display of a lot of larger subnets.
I could care less about this visual display and agree it isn't practical for larger subnets. If you did want to have something like this, maybe you would set a limit for max prefix size it is displayed for.
I think you can take a similar approach to what you do with the child prefixes table. Here you have available subnets (though I didn't realize this at first, so maybe consider a different row color). Those are hyperlinked to a create new subnet form with the range autofilled, which I like. Though the workflow might be nicer if you used a popup rather than directing the user to a new page?
Anyway, maybe something like this. I imagine that range there is hyperlinked and takes you to a new IP address form for the first IP in that range. By the way, it would be nice to be able to add a range of IPs, not just one at a time. Again, I think it would flow better if you handle the addition in a popup (similar to phpipam).
I like @anthraxau's idea of having color coded ranges. Maybe this can be accomplished with a tag #132 I imagine something similar to gmail labels where you have have multiple tags shown in the table which can have colors assigned to them, to make different things stand out more. That idea is also off topic though.
@jeremystretch commented on GitHub (Aug 3, 2016):
How about this?
Clicking one of the "free IPs" buttons takes the user to the IP adress creation form, pre-populated with the first available IP in that range.
@ambique commented on GitHub (Aug 3, 2016):
Great.
On Wednesday, 3 August 2016, Jeremy Stretch notifications@github.com
wrote:
Arafat M. Bique
Security Analyst
CISA | GCFE | GWAPT | GPEN | CISSP | CHFI | CEH | CCNP | CCNA SECURITY |
CCAI | MCSE
Esta mensagem foi enviada a partir de um dispositivo móvel, pelo que poderá
conter erros de acentuação e informação incompleta.
This message was sent from a mobile device so some features and information
might not be completed or available.
@alexjhart commented on GitHub (Aug 3, 2016):
Looks good. Only improvement I can see would be to add the ranges like I had in my mockup.
@bellwood commented on GitHub (Aug 3, 2016):
Being able to "add an IP" from the free block would be great
@jeremystretch commented on GitHub (Aug 3, 2016):
@bellwood The "free IPs" button is indeed a link to add an IP, initialized to the first available IP in the range.
@jeremystretch commented on GitHub (Aug 3, 2016):
Please try out v1.4.1 and provide feedback.