Daniel Salzman via knot-dns-users <knot-dns-users@lists.nic.cz> wrote:
> The Knot's parser behaviour is as you described. However, the default TTL in > the parent zone file isn't affected > by the default TTL in the included zone file. Just to be clear: my parent zone file includes at the very beginning the file with the default TTL directive. I might have misunderstood you, though. > RFC 1035 says: > "Note that a $INCLUDE entry never changes the relative > origin of the parent file, regardless of changes to the relative origin > made within the included file." Oops, I didn't know that :-( > So I expect the same should apply to the $TTL directive as well. > > What do you and the others think? I do consider the $INCLUDE directive as "include all definitions in that included file and use the default $TTL directive if not stated otherwise". example.tld: ----------------------------------------------------- $ORIGIN example.tld. $INCLUDE ___TTL_SOA___ $INCLUDE ___A_AAAA___ ----------------------------------------------------- That should be -IMHO- combined to a resulting zone file like: ----------------------------------------------------- $ORIGIN example.tld. $TTL 30m ; default expiration time of all resource records without their own TTL value @ IN SOA ns1.enfer-du-nord.net. hostmaster.enfer-du-nord.net. ( 2024042100 ; serial (increase after each change) 4h ; refresh (recommended >= 4h) 1h ; retry (recommended >= 1h) 14d ; expire (recommended between 7d and 14d) 600 ; negative caching (former minimum, recommended between 5m and 1d) ) ; A and AAAA records @ IN A 1.2.3.4 IN AAAA dead:beef::1 ----------------------------------------------------- That is what I would expect without knowing RFCs. And, IIRC, that is the way NSD did it before I migrated to Knot ;-) Just my 2 cents, Michael >> $TTL 30m ; default expiration time of all resource records without their own >> TTL value >> ; >> @ IN SOA ns1.example.tld. hostmaster.example.tld. ( >> 2024042100 ; serial (increase after each change) >> 4h ; refresh (recommended >= 4h) >> 1h ; retry (recommended >= 1h) >> 14d ; expire (recommended between 7d and 14d) >> 600 ; negative caching (former minimum, recommended between 5m and 1d) >> ) > > Daniel > > > On 7/13/24 16:25, Michael Grimm via knot-dns-users wrote: >> Hi, >> I do have the following example zone files definitions: >> $ORIGIN example.tld. >> $INCLUDE ___TTL_SOA___ >> and so on >> My ___TTL_SOA___ looks as follows: >> $TTL 30m ; default expiration time of all resource records without their own >> TTL value >> ; >> @ IN SOA ns1.example.tld. hostmaster.example.tld. ( >> 2024042100 ; serial (increase after each change) >> 4h ; refresh (recommended >= 4h) >> 1h ; retry (recommended >= 1h) >> 14d ; expire (recommended between 7d and 14d) >> 600 ; negative caching (former minimum, recommended between 5m and 1d) >> ) >> Note: All of my subsequent $INCLUDDE files do *not* have TTL values set >> explicitly! >> But: I do end up in a mix of TTL values of 1800 and 3600 for my resource >> records. You can check that using my domain in my email address. >> I found the following thread about this issue at >> https://gitlab.nic.cz/knot/knot-dns/-/issues/751 and >> https://datatracker.ietf.org/doc/html/rfc2308#section-4 cited therein: >> "All resource records appearing after the directive, and which do not >> explicitly include a TTL value, have their TTL set to the TTL given in the >> $TTL directive." >> In my understanding Knot's behaviour has been set to follow this standard >> track. Thus, I do expect that all of my resource records should have a TTL >> set to my $TTL directive of 1800 seconds. >> I might have well overlooked something, though. >> Any feedback is highly appreciated, >> Michael >> -- > -- --