On 29/04/15 15:40, David Kupka wrote:
On 04/29/2015 02:27 PM, Petr Spacek wrote:
Hello,

I would like to discuss behavior change which is need for fixing ticket
https://fedorahosted.org/bind-dyndb-ldap/ticket/155
"PTR record synchronization for A/AAAA record tuple can fail mysteriously"

Current behavior
================
Currently DNS clients receive SERVFAIL error if A/AAAA record is updated but
respective reverse zone is not configured on the same IPA server.
See https://fedorahosted.org/bind-dyndb-ldap/wiki/BIND9/SyncPTR for details.


Change proposal
===============
It seems to me that #155 is not fixable without following behavior change:
Client will *not* receive an error if reverse zone is not configured.

Would it be okay to do this change and *do not report an error if respective
reverse zone is not configured*?
Just for clarification:
If any A/AAAA record update failed, server will return SERVFAIL and rollback changes If all A/AAAA records were successfully added, just SRV record is not created by dyndb-ldap, server returns NOERROR nsupdate contains A/AAAA/PTR record, if PTR record update failed, server will return SERVFAIL and rollback changes.

Right?

Yes. Client has always chance to check if the reverse records were created or not. Additionally client only tries to add A/AAAA records and doesn't know if there are any reverse zones or not.
Yes. Client has no information that PTR records should be created too.
We can just shown warning, the client has no reverse record (we need to decide if this is right approach)



I think that it could be actually less confusing because it might be an
intentional configuration, too.

E.g. the IPA DNS server might be responsible only for 2 zones:
- example.com.
- 2.0.192.in-addr.arpa.
but it does not mean that the zone 'example.com.' cannot contain A/AAAA
records belonging to other reverse zones.

Currently any attempt to update A/AAAA record which does not belong to reverse zone '2.0.192.in-addr.arpa.' ends with SERVFAIL message and terminates the
update prematurely.


Technical details
=================
BIND internally splits update message with multiple requests (e.g. request to add multiple A/AAAA records) to steps where one step is does 1 change in 1 resource record at a time. Our plugin can see only separate steps and not the
whole update message.

Failure in any step terminates the update completely, rest of the update
message is not processed and error is returned to the client. On the other hand, we have no information beforehand if the currently processed step is the last one or not so it is impossible to reliably implement 'this update is the
last one, report the error here' logic.

I do not see a way to change this without changes to BIND internals and IMHO
it is not worth the effort.


Thank you for your time!



CCing Jakub as this can hit SSSD.
Martin^2

--
Martin Basti

--
Manage your subscription for the Freeipa-devel mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-devel
Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code

Reply via email to