[RFE] RFC 2317 support in Neutron with designate provider
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
New
|
Wishlist
|
Unassigned |
Bug Description
proposal: RFC 2317 support in Neutron with designate provider
=======
Discussion
----------
**Summary : Add four settings `ipv4_ptr_zone`, `ipv4_ptr_
**Rationale:** The creation of PTR DNS zones for non byte-delimited subnets is not possible in OpenStack, it is therefore impossible to manage PTR records in case of a classless in-addr delegation, as described in RFC 2317.
In those situations, one can be given a delegation of a reverse zone with an unusual name, for instance 0-25.2.
**Security considerations:** Giving users the ability to make neutron create new arbitrary zones in designate by updating PTR zone settings may pose a security risk. It would be preferable to limit the ability to update these settings to administrators only.
Proposed changes
----------------
Add a `ipv4_ptr_zone` setting to define a PTR zone name, and a `ipv4_ptr_
#### Use cases
Configuration for subnet 192.0.2.0/25 would be as follow:
```
ipv4_ptr_zone = "0-25.2.
ipv4_ptr_
```
Which would lead to this zone file:
```
$ORIGIN 0-25.2.
1 IN PTR reverse-1.example.
2 IN PTR reverse-2.example.
# [...]
127 IN PTR reverse-
```
Assuming that the parent zone has an accurate configuration, such as:
```
$ORIGIN 2.0.192.
0-25 IN NS designate.
1 IN CNAME 1.0-25
2 IN CNAME 2.0-25
# [...]
127 IN CNAME 127.0-25
```
Configuration for the subnet `192.168.0.0/16` would look like:
```
ipv4_ptr_zone = "168.192.
ipv4_ptr_
```
Same logic for `172.16.0.0/12`:
```
ipv4_ptr_zone = "16/12.
ipv4_ptr_
```
When absent, the old behavior of `ipv4_ptr_
### First step: global Neutron configuration
The behavior described above is configured with settings in the global neutron configuration file.
Raise an error in case of invalid setting configuration:
* `ipv4_ptr_
* `ipv4_ptr_zone` is set and `ipv4_ptr_
* `ipv4_ptr_zone` is not set and `ipv4_ptr_
* The same applies for IPv6 settings.
### Second step: per-IPAllocatio
Global settings could be overwritten for each `IPAllocationPool`; however, it would require an update of both `IPAllocationPool` and `IPAllocation` models (in `neutron/
Theses settings could be stored in the `IPAllocationPool` model:
```python
class IPAllocationPoo
# [snip]
ptr_zone = sa.Column(
ptr_
```
A reference to the originating `IPAllocationPool` could be kept into the `IPAllocation` model in order to retrieve the rDNS settings:
```python
class IPAllocation(
# [snip]
ip_
```
information type: | Public → Public Security |
information type: | Public Security → Public |
tags: | added: rfe |
Changed in neutron: | |
importance: | Undecided → Wishlist |
tags: | added: dns |
Lets discuss that initially on our next drivers meeting on Friday 12.03.2021: http:// eavesdrop. openstack. org/#Neutron_ drivers_ Meeting