Hi Andrew,
why do you throw such info
"We should probably at least revert the one that was put in"
knowing that the former version without that patch "was NOT working at ALL"!
In case you missed those long discussions about that failure those days,
please just DO NOT COMMENT!
I was _not_ aware about the (somewhat hidden) "tombstone" problem those days.
(neither was Kai .... or others)
And btw - I'm not completely sure whether the DLZ dns implementation is
working right in this area ...
Achim Gottinger <ac...@ag-web.biz> brought this to my/our attention:
https://blogs.technet.com/b/networking/archive/2008/03/19/don-t-be-afraid-of-dns-scavenging-just-be-patient.aspx?Redirected=true
I think - worth reading...
At least samba should behave "as friendly as possible" regarding deleted dns entries.
Looking at that (...o_o ..) code for days now.
Cheers, Günter
While the article is interesting indeed it did not cover how tombstones
are treated.
Here an retention time of 7 days before the deleted dns records
dissapear from ad is mentioned.
Hi Achim,
thanks, great new link again! :-)
Cheers, Günter
--
Atm i'm trying to collect as much info as possible.
Can someone comment on this article/patch ?
http://support.microsoft.com/kb/2548145/en-us
http://technet.microsoft.com/en-us/magazine/2007.09.tombstones.aspx
The hot fix link you posted sounds like my issue.
--
Guess it belongs to the issue described here
https://blogs.technet.com/b/isrpfeplat/archive/2010/09/23/dns-scavenging-internals-or-what-is-the-dnstombstoned-attribute-for-ad-integrated-zones-dstombstoneinterval-dnstombstoned.aspx?Redirected=true
*Note: The default behavior for Windows 2008 R2 was modified and will be
acting as if the SID of the machine has changed regardless of whether
it's true or not. Meaning when a record update is sent to a DNS server
hosted on a Windows 2008 R2 Domain Controller and the record's
dnsTombstone=True the record is deleted regardless of the permissions
issue described earlier. This was to fix the issue described in
**http://support.microsoft.com/kb/952087**.*
*In certain cases (with many updates and low No-Refresh interval) this
can cause issues. The resolution can be found in
**http://support.microsoft.com/kb/2548145/en-us**.*
some additional notes.
When the samba DLZ dns driver is creating dyn. dns entries, a time stamp
is set on that record! This is the expected behavior for dynamic entries.
This is _NOT_ the case when the internal dns used! :-(
Because the time stamp is zero, such a dns entry is treated as being "static"!
"static" dns entries are _never_ used by scavenging (aging)!
(beside when "dnscmd /ageallrecords ...." has been issued at some time)
See samba dns dlz vs internal differences here:
http://picpaste.com/samba-dns-6UEpowtv.png
--------------------
One can also use the MS "dnscmd" command against the internal dns entries:
C:\Users\administrator>dnscmd linux4771 /enumrecords intranet01.hom mytest /additional /detail
Zurückgegebene Datensätze:
RPC-Knoten:
ptr = 0000000000141BE0
wLength = 16
wRecordCount = 1
dwChildCount = 0
dwFlags = 00000000 Knotenname = @
A Datensatzinformationen:
ptr = 0000000000141BF0
wType = A (1)
wDataLength = 4
dwFlags = f0
rank = f0
dwSerial = 0000006E
dwTtlSeconds = 3600
dwTimeStamp = 0 ([ 0: 0: 0] [ 1/ 1/1601]) A 192.168.200.202
Der Befehl wurde erfolgreich ausgeführt.
----------------------
dwTimeStamp is zero ===> STATIC dns entry!
This adds some additional infos to all our former posts about scavenging ...
Will keep you informed.
Cheers, Günter
Internal samba DNS server:
The missing time stamp issue should be solved like this:
diff --git a/source4/dns_server/dns_update.c b/source4/dns_server/dns_update.c
index 9edc40b..b2c2bd7 100644
--- a/source4/dns_server/dns_update.c
+++ b/source4/dns_server/dns_update.c
@@ -292,6 +292,7 @@ static WERROR dns_rr_to_dnsp(TALLOC_CTX *mem_ctx,
char *tmp;
char *txt_record_txt;
char *saveptr = NULL;
+ NTTIME t;
if (rrec->rr_type == DNS_QTYPE_ALL) {
return DNS_ERR(FORMAT_ERROR);
@@ -305,6 +306,12 @@ static WERROR dns_rr_to_dnsp(TALLOC_CTX *mem_ctx,
/* TODO: Autogenerate this somehow */
r->dwSerial = 110;
+ /* We need to set a time stamp on this record */
+ unix_to_nt_time (&t, time(NULL));
+ t /= 10*1000*1000; /* convert to seconds */
+ t /= 3600; /* convert to hours */
+ r->dwTimeStamp = (uint32_t)t;
With my other revert and (internal) patch to allow dyn. dns updates also in case of
Name=mytest, Records=0, Children=0
all seems to be working fine now! :-)
Cheers, Günter
Hmmm - working at least similar to the DLZ driver ...
--
> >
>
> some additional notes.
>
> When the samba DLZ dns driver is creating dyn. dns entries, a time stamp
> is set on that record! This is the expected behavior for dynamic entries.
>
> This is _NOT_ the case when the internal dns used! :-(
>
> Because the time stamp is zero, such a dns entry is treated as being "static"!
Hi
Would this explain why our dns update requests using nsupdate fail
against the internal dns? The DNS record is created once when a Linux
client joins the domain, but is never subsequently updated by requests
from (in our case sssd which uses. . .) nsupdate. Converting to bind9
dlz, works fine.
Just to add a bit more confusion, windows boxes update fine with either
server.
Günter: did you say you have a patch to correct time-stamp on the
internal server? My boss has been pushing me to internal dns and so I'd
like to be able to test. Of course, will share back.
Thanks,
Steve