-
Notifications
You must be signed in to change notification settings - Fork 31
[Feature]: source and destination range for acl have to be a prefix in Netbox? #129
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Thanks for opening this Issue! We really appreciate the feedback & testing from users like you! |
I let Ryan comment on the questions asked in this. But IMO, even if ip addresses are to be used, we should use them via the ipam > ipaddress model as a foreign key. I'd discourage the use of char fields for adding any arbitrary ip addresses. |
+1 for adding IPs as a src or dst item. We have alot of ACLs that have host IPs listed in entries. |
also of note, as a result of the source/destination object being required to be a netbox "prefix" object you can't represent a default adding support for /0 netmask was discussed/rejected here - as a result you can't configure the following policy/rule with netbox-acl:
|
Hey, you can leave the Source/Destination-Prefix/Port field blank and then you have your "Any" rule. |
I'd like to work on this feature (ideally implement it for v1.5.0 and newer), can it be approved and assigned to me? |
Being able to select a Service as target instead of an IP address and port would be awesome as well. |
@ryanmerolle Right now i'm simply adding I'm proceeding with my approach for now, but let me know, if the |
@ryanmerolle I have completed the work for this feature. (I was not able to backport it to 1.5.0. I think we would need version specific release branches for that) |
hi @rvveber will look to review this next week - thanks for your submission, please note for future commits please don't bump the version number, more than likely this will go into a 1.7.0 release (for NetBox 4.1) |
Great! Thanks! |
Hi people, is there a blocker to this PR? I would love to have this merged. Thanks for your work! |
+1. We also need this Feature very urgently! |
I really don't want to be rude, but i put a lot of effort into the solution 2 months ago, and it's kind of important that it will be available before the end of this year. |
Hey @jeremystretch, please can you take a look on this? We need this function as soon as possible, but are unfortunately dependent on the merge request. Many thanks in advance! |
Do we have update on this? I urgently need this feature |
@ryanmerolle may i ask to help you maintain this project? |
Happy last day of the year! Any update on this? |
First of all, thank you very much for addressing this issue and for the incredible effort you've put into providing a valid solution that's ready to be merged. Your work is highly appreciated!
Would you be open to reconsidering the While your current solution is a valid and functional implementation, I believe that adopting the Moreover, migrating from the I understand that such a change would introduce a breaking API modification, but this could potentially be addressed as part of a version 2.0.0 release. Regarding the complexity: I’ve implemented a similar feature before and would be more than happy to assist you with this if needed. Thank you again for all your hard work! |
@pheus I don't have the time to re-implement this with dynamic assignments. Personally, i think your suggestion is unrealistic: |
@pheus If you want to contribute this, feel free. I have rebased the branch. |
Thank you for taking the time to respond and consider my suggestion. I completely understand your concern about dragging this issue out further, and I agree that delaying it might not be ideal. That said, I still believe that migrating later could make things even more complicated. Regarding the API breaking changes, I agree that they can be inconvenient, but since NetBox itself introduces such changes from time to time, users might already be accustomed to adapting. Nonetheless, I’d be happy to try contributing this approach based on your work, if that’s okay with you. It would be really helpful if you could find the time to test my implementation when it’s ready. If you’re not satisfied with the results, I’m completely fine with my suggestion or implementation being canceled. Thanks again for your efforts! |
@rvveber I just wanted to let you know that I’ve been working on the I’ll post a first draft in the coming days. |
@pheus No worries, i was aware that it would change a lot, which is why i didn't have the time. @users |
@rvveber Thank you! 😀 @cruse1977 As you may have noticed, I’m working on backporting all small fixes, code cleanups, and minor features to the dev branch, ensuring that all unrelated changes remain separate from this feature. I hope this works in your favor. |
@pheus your work is very much appreciated! I'm keeping an eye and approving as required - however am split over a number of projects currently and circling as time allows. With Netbox 4.3 due relatively shortly I expect that release to wrap in any major new feature updates. |
@cruse1977 Thank you, I really appreciate it! 😊 Quick status update on this feature: I’ve completed most of the work but am currently focusing on backporting all drive-by fixes and enhancements. If there’s interest, I can publish the current version to a WIP branch. Once all backports are merged, I’ll create a complete PR. |
@killermoehre How would you expect the behavior to work when using a Service as a source and/or destination? I don’t currently use Services extensively, so I’m not too familiar with their typical usage. From my testing, I noticed that Services must be bound to a Device, a protocol (TCP, UDP, SCTP), and ports, but they don’t necessarily need an assigned IP address. Would you expect only Services with an assigned IP address to be valid as source/destination? Or should a Service serve as an alternative to defining TCP/UDP ports and not require an assigned IP address? The more I think about this, the more it seems like this should be a separate Feature Request. This would allow for a dedicated discussion on expectations and the implementation of more complex logic and tests. What do you think? |
@pheus If a service is not bound to an IP, then I expect that all IP addresses of the device are valid sources/destinations. The same if you would bind your local service to |
Thank you for clarifying, @killermoehre. I think that behavior should be possible, but I believe these cases would be better handled as a new feature. Would you mind opening a new issue as a feature request so we can separate these detailed discussions? It would be awesome if you could provide your use case and expectations. |
Oh, my. I'm not any more in the project where this was a necessary feature. @rvveber can you describe the expectation here? |
Does it matter? @pheus Can you not implement it exactly how i did, just dynamically? |
Thanks for your responses, @rvveber and @killermoehre! I think I understand your point — your stance is that the API user should handle the different scenarios, right? I've already implemented dynamic support for Services, but during testing I noticed that, without proper validation, it's possible to define both a Service and custom TCP/UDP ports at the same time. There's also the use case where users define Services based solely on ports (e.g., a Service named "SSH" with TCP/22) and want to combine that with a manually specified IP address or prefix. Another example would be something like Microsoft Active Directory, which could be modeled as a Service without an IP, and used in an ACL with a destination IP address and destination service MS-AD. That’s why I feel this should be handled separately from the original feature request, which focuses on supporting IP addresses and IP ranges directly. A dedicated feature request would give us space to discuss expectations and implementation details for Service-based rules more thoroughly. Just to clarify: I’m happy to implement this behavior — I just want to make sure we clearly understand the intended use cases and can apply the right validation logic. Thanks again! |
Hi everyone, I just wanted to share a quick update on the current status of this feature request, especially after a bit of quiet here. Most of the relevant backports have already been submitted as PRs and merged — thank you to everyone involved! There are just a few outstanding issues still pending, all of which already have open PRs:
In the meantime, as many of you know, NetBox v4.3 was recently released. This version introduces changes that require a complete rewrite of the GraphQL filters, which is now being tracked in #261. I assume that getting the plugin fully compatible with NetBox 4.3 is a high priority for most of us. Once those last few backports are merged and the 4.3 migration is complete, I’ll rebase the feature branch and open a proper PR for review. Thanks again to everyone for your patience and support. I'm optimistic we’re getting close! |
NetBox version
v3.4.3
Feature type
New Model to plugin
Proposed functionality
I had a look on this plugin for our use case and one thing I noticed (except that as already mentioned ACLs are bound to devices) is that if you want to use a source or destination range it has to be part of "prefixes". I did not find a way to use an aggregate or a host or any IP range not defined in Netbox.
The only way I found to forbid e.g. a bogus IP range like 192.0.2.0/24 was to add a prefix for this in Netbox.
Also with hosts: if I want to create a rule for example to allow access to a single host it is not possible except I create an additional prefix for this.
Is there a special reason why every source or destination range has to be an exsting prefix?
Use case
You could setup source and destinations with any IP range regardless whether they exist in Netbox or not.
External dependencies
don't know about dependencies for this
The text was updated successfully, but these errors were encountered: