<div dir="ltr">Hello Mark,<br><br>Thanks for your answer, it gave me a lot to think about.<br><br>I have been reading about the "validate-except" command, but can't get myself to use a command that is not recommended.<br><br>I did a lot of research, before I went for the .home domain. I didn't want to end up with a domain that potentially could conflict with a domain on the internet.<br>That ment that I had to read a lot of reports, most of them from ICANN, of them from back in Feb 2018(*), reported that .home (.corp and .mail) would not be sold and available on the internet. <br>i didn't know about the insecure delegation to break the DNSSEC, so it might be worth it to switch to .home.arpa, even though I had hoped to keep the domain name to 1 tier. <br><br>I have been learning that the DNS structure needs to have a recursive and an authoritative server, to be more exact 2 of each for failover purposes, if you want a reliable and secure DNS structure. my plan was/is to configure failover servers when i got this structure to work.. <br> <br>so when i am a little bit confused and  when reading that "forward zones" is not recommended. any links to publications about this?<br><div>also, could i get you to explain the last statement in your reply. As I want to implement a DNS structure that follows best practices and hopefully is secure, I want to learn about the reasons for this.  <br></div><div><br></div><div>
(*) <a href="https://www.icann.org/resources/board-material/resolutions-2018-02-04-en#2.c">https://www.icann.org/resources/board-material/resolutions-2018-02-04-en#2.c</a>

</div><div><br></div><div>/Weeltin<br></div><br><br><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jul 19, 2020 at 3:10 AM Mark Andrews <<a href="mailto:marka@isc.org">marka@isc.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Your problem comes from the fact that BIND 9.14 has DNSSEC validation enabled by default (unless disabled at configure time or in named.conf) and the answers from the grafted on namespace (.home) fail DNSSEC validation as there is not a insecure delegation for .home to break the DNSSEC chain of trust.  You can use validate-except to teach there recursive server to not validate parts of the namespace but it is NOT RECOMMENDED as it doesn’t help validating clients.<br>
<br>
e.g. <br>
<br>
validate-except { home; };<br>
<br>
I would stop trying to use .home as it has not been delegated for home use.  Use home.arpa instead which has been reserved for home use and has a insecure delegation to break the DNSSEC chain of trust pointing at servers which only return NXDOMAIN for names under home.arpa.  This is the same delegation model used for the RFC 1918 reverse zone.  Note that DS is absent from the list of types at the delegation point in the NSEC record. There was an attempt made to delegate .home this way but it floundered on ICANN/IETF politics.<br>
<br>
e.g.<br>
<br>
home.arpa.              172800  IN      NS      <a href="http://blackhole-1.iana.org" rel="noreferrer" target="_blank">blackhole-1.iana.org</a>.<br>
home.arpa.              172800  IN      NS      <a href="http://blackhole-2.iana.org" rel="noreferrer" target="_blank">blackhole-2.iana.org</a>.<br>
home.arpa.              86400   IN      NSEC    in-addr.arpa. NS RRSIG NSEC<br>
home.arpa.              86400   IN      RRSIG   NSEC 8 2 86400 20200731120000 20200718110000 57156 arpa. lSqLNz1E/6WkAUDAJDnvo9X248B+PAWM34s0S0PJFjPi4YLoE//6zSR6 Dgm0T+2qV2KrgvYbOzHV9Z/lRopFxSEJSSwoHgrUmfofXmIbQiKgQHBi g9dvL8yeJm0cRe6QMuM1q/D/3+AnPv5OQNBhC6+UEA+enO3JtDbvjr/H XfPPvfDfozacZkHPe+AYpJbmT7qfHv8Gw/BeeNtDex9jMoDbJ2l0BLT1 UTPKE9+Abrh3RawcKBF3BbLNWU6AhIkOLZRADGMjcZg1M/IHUk/rOWXV EMZihg1+5I4GSmaRDN0jTX9g5jr822EZfaZLmCKlcGYMMHVOkMUA7k0r +v/Zrg==<br>
<br>
If you are using forward zones (not recommended) set “forward only;” as you don’t want to fallback to querying servers on the global Internet when grafting on namespace.  If you do use a forward zone then the servers being forwarded to need to either a) serve the *entire* namespace under the forward zone, or b) be configured as recursive servers.<br>
<br>
zone home.arpa {<br>
        type forward;<br>
        forward only;<br>
        forwarders {192.168.14.20;};<br>
};<br>
<br>
I would recommend using secondary zone rather than forward zones for grafting on namespaces, just ensure that the all slave servers are receiving NOTIFY messages (use also-notify) so that they receive changes fast.  Fast propagation of changes is needed in a home environment.  Secondary zone also provide a break in the DNSSEC chain of trust as far as the recursive server is concerned.  They however do not break the DNSSEC chain of trust for any DNSSEC validating clients of the recursive server.<br>
<br>
zone home.arpa {<br>
        type secondary;<br>
        primaries {192.168.14.20;};<br>
        file “home.arpa.db”;<br>
        ...<br>
};<br>
<br>
zone home.arpa {<br>
        type primary;<br>
        file “home.arpa.db”;<br>
        also-notify { address list; };<br>
        ...<br>
};<br>
<br>
Also forget any garbage that recursive servers should not also serve zones.  People have take the advice that listed authoritative servers shouldn’t be recursive (which is good advise when serving zones to the public) and inverted it to come up with bad advice.<br>
<br>
Mark<br>
<br>
> On 18 Jul 2020, at 05:18, Weeltin <<a href="mailto:weeltinl@gmail.com" target="_blank">weeltinl@gmail.com</a>> wrote:<br>
> <br>
> Hello all,<br>
> <br>
> I’m trying to implement a DNS structure, containing a recursive and authoritative server, but in doing so, I have run into a small problem. I can make DNS queries from a client toward the net, but when I try to do the same toward my internal domain, I get no result. I have spent days trying to figure out what is going on, but to no avail, I there for hope that someone on this list can point me in the right direction or right out tell what is wrong.<br>
> <br>
> /Weeltin.<br>
> <br>
>   -----DIG troubleshoots<br>
> <br>
> [weeltin@c1 ~]$ cat /etc/resolv.conf <br>
> # Generated by NetworkManager<br>
> nameserver 192.168.14.10<br>
> <br>
> [weeltin@c1  ~]$ dig <a href="http://google.com" rel="noreferrer" target="_blank">google.com</a><br>
> ; <<>> DiG 9.11.11-RedHat-9.11.11-1.fc31 <<>> <a href="http://google.com" rel="noreferrer" target="_blank">google.com</a><br>
> ;; global options: +cmd<br>
> ;; Got answer:<br>
> ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48932<br>
> ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1<br>
> <br>
> ;; OPT PSEUDOSECTION:<br>
> ; EDNS: version: 0, flags:; udp: 4096<br>
> ; COOKIE: c1bc4a11c40bd755905c8c705f11f5ffe699cc0116ed8ba5 (good)<br>
> ;; QUESTION SECTION:<br>
> ;<a href="http://google.com" rel="noreferrer" target="_blank">google.com</a>.  IN      A<br>
> <br>
> ;; ANSWER SECTION:<br>
> <a href="http://google.com" rel="noreferrer" target="_blank">google.com</a>.   300     IN      A       216.58.211.142<br>
> <br>
> ;; Query time: 179 msec<br>
> ;; SERVER: 192.168.14.10#53(192.168.14.10)<br>
> ;; WHEN: Fri Jul 17 15:03:27 EDT 2020<br>
> ;; MSG SIZE  rcvd: 83<br>
> <br>
> <br>
> [weeltin@c1 ~]$ dig c1.example.home<br>
> ; <<>> DiG 9.11.11-RedHat-9.11.11-1.fc31 <<>> c1.example.home<br>
> ;; global options: +cmd<br>
> ;; Got answer:<br>
> ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 62602<br>
> ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1<br>
> <br>
> ;; OPT PSEUDOSECTION:<br>
> ; EDNS: version: 0, flags:; udp: 4096<br>
> ; COOKIE: cf8876e3b35138f47040188e5f11f64a91445aa4f8310f5a (good)<br>
> ;; QUESTION SECTION:<br>
> ;c1.example.home.     IN      A<br>
> <br>
> ;; AUTHORITY SECTION:<br>
> .     10800   IN      SOA     <a href="http://a.root-servers.net" rel="noreferrer" target="_blank">a.root-servers.net</a>. <a href="http://nstld.verisign-grs.com" rel="noreferrer" target="_blank">nstld.verisign-grs.com</a>. 2020071701 1800 900 604800 86400<br>
> <br>
> ;; Query time: 263 msec<br>
> ;; SERVER: 192.168.14.10#53(192.168.14.10)<br>
> ;; WHEN: Fri Jul 17 15:04:42 EDT 2020<br>
> ;; MSG SIZE  rcvd: 147<br>
> <br>
> <br>
> <br>
> [weeltin@c1 ~]$ dig @<a href="http://192.168.14.20" rel="noreferrer" target="_blank">192.168.14.20</a> c1.example.home<br>
> <br>
> ; <<>> DiG 9.11.11-RedHat-9.11.11-1.fc31 <<>> @<a href="http://192.168.14.20" rel="noreferrer" target="_blank">192.168.14.20</a> c1.example.home<br>
> ; (1 server found)<br>
> ;; global options: +cmd<br>
> ;; Got answer:<br>
> ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20704<br>
> ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1<br>
> ;; WARNING: recursion requested but not available<br>
> <br>
> ;; OPT PSEUDOSECTION:<br>
> ; EDNS: version: 0, flags:; udp: 4096<br>
> ; COOKIE: 747289c94876cf349034aec35f11f794a29c6747bb6a694f (good)<br>
> ;; QUESTION SECTION:<br>
> ;c1.example.home.     IN      A<br>
> <br>
> ;; ANSWER SECTION:<br>
> c1.example.home.      604800  IN      A       192.168.14.1<br>
> <br>
> ;; Query time: 0 msec<br>
> ;; SERVER: 192.168.14.20#53(192.168.14.20)<br>
> ;; WHEN: Fri Jul 17 15:10:12 EDT 2020<br>
> ;; MSG SIZE  rcvd: 88<br>
> <br>
> <br>
> <br>
> <br>
> <br>
> ----- informations and configurations ----<br>
> <br>
> OS: Alpine 3.12<br>
> <br>
> Bind: bind 9.14.12<br>
> <br>
>  <br>
> Ns1: 192.168.14.10 (recursive)<br>
> <br>
> Ns2: 192.168.14.20 (authoritative)<br>
> <br>
> C1: 192.168.14.1 (client)<br>
> <br>
>  <br>
> --- recursive config (NS1)<br>
> <br>
> // recursive named.conf<br>
> //<br>
> <br>
> acl trusted {<br>
> <br>
>         <a href="http://192.168.14.0/24" rel="noreferrer" target="_blank">192.168.14.0/24</a>;<br>
> <br>
>         localhost;<br>
> <br>
> };<br>
> <br>
> <br>
> acl rfc1918 {<br>
> <br>
>         <a href="http://10.0.0.0/8" rel="noreferrer" target="_blank">10.0.0.0/8</a>;<br>
> <br>
>         <a href="http://172.16.0.0/12" rel="noreferrer" target="_blank">172.16.0.0/12</a>;<br>
> <br>
>         !<a href="http://192.168.14.0/24" rel="noreferrer" target="_blank">192.168.14.0/24</a>;<br>
> <br>
>         <a href="http://192.168.0.0/16" rel="noreferrer" target="_blank">192.168.0.0/16</a>;<br>
> <br>
> };<br>
> <br>
> <br>
> acl rfc5735 {<br>
> <br>
>         <a href="http://0.0.0.0/8" rel="noreferrer" target="_blank">0.0.0.0/8</a>;<br>
> <br>
>         <a href="http://169.254.0.0/16" rel="noreferrer" target="_blank">169.254.0.0/16</a>;<br>
> <br>
>         <a href="http://192.0.0.0/24" rel="noreferrer" target="_blank">192.0.0.0/24</a>;<br>
> <br>
>         <a href="http://192.0.2.0/24" rel="noreferrer" target="_blank">192.0.2.0/24</a>;<br>
> <br>
>         <a href="http://192.88.99.0/24" rel="noreferrer" target="_blank">192.88.99.0/24</a>;<br>
> <br>
>         <a href="http://198.18.0.0/15" rel="noreferrer" target="_blank">198.18.0.0/15</a>;<br>
> <br>
>         <a href="http://198.51.100.0/24" rel="noreferrer" target="_blank">198.51.100.0/24</a>;<br>
> <br>
>         <a href="http://203.0.113.0/24" rel="noreferrer" target="_blank">203.0.113.0/24</a>;<br>
> <br>
>         <a href="http://224.0.0.0/4" rel="noreferrer" target="_blank">224.0.0.0/4</a>;<br>
> <br>
> };<br>
> <br>
> <br>
> options {<br>
> <br>
>         directory "/var/bind";<br>
> <br>
>         listen-on {<br>
>                 127.0.0.1;<br>
> <br>
>                 192.168.14.10;<br>
> <br>
>         };<br>
> <br>
>         listen-on-v6 {<br>
> <br>
>                 none;<br>
> <br>
>         };<br>
> <br>
>          allow-query {<br>
> <br>
>                 trusted;<br>
> <br>
>         };<br>
> <br>
>          //query-source address * port 53;<br>
> <br>
>          allow-query-cache {<br>
> <br>
>                 trusted;<br>
> <br>
>         };<br>
> <br>
>          blackhole {<br>
> <br>
>                 rfc1918;<br>
> <br>
>                 rfc5735;<br>
> <br>
>         };<br>
> <br>
>          allow-transfer {<br>
> <br>
>                 none;<br>
> <br>
>         };<br>
> <br>
>         pid-file "/var/run/named/named.pid";<br>
> <br>
> <br>
>         // Changing this is NOT RECOMMENDED; see the notes above and in<br>
> <br>
>         // named.conf.recursive.<br>
> <br>
>         allow-recursion {<br>
> <br>
>                 trusted;<br>
> <br>
>         };<br>
> <br>
>         recursion yes;<br>
> <br>
> };<br>
> <br>
> zone "." IN {<br>
> <br>
>         type hint;<br>
> <br>
>         file "root.cache";<br>
> <br>
> };<br>
> <br>
> <br>
> zone "localhost" IN {<br>
> <br>
>         type master;<br>
> <br>
>         file "pri/localhost.zone";<br>
> <br>
>         allow-update { none; };<br>
> <br>
>         notify no;<br>
> <br>
> };<br>
> <br>
> <br>
> zone "127.in-addr.arpa" IN {<br>
> <br>
>         type master;<br>
> <br>
>         file "pri/127.zone";<br>
> <br>
>         allow-update { none; };<br>
> <br>
>         notify no;<br>
> <br>
> };<br>
> <br>
> <br>
> zone "example.home" {<br>
> <br>
>         type forward;<br>
> <br>
>                                  forwarders { 192.168.14.20; };<br>
> <br>
> };<br>
> <br>
> <br>
> <br>
> ---  authoritative config (NS2) <br>
> // authoritative named.conf<br>
> //<br>
> acl trusted {<br>
>         <a href="http://192.168.14.0/24" rel="noreferrer" target="_blank">192.168.14.0/24</a>;<br>
>         localhost;<br>
> };<br>
> <br>
> acl rfc1918 {<br>
>         <a href="http://10.0.0.0/8" rel="noreferrer" target="_blank">10.0.0.0/8</a>;<br>
>         <a href="http://172.16.0.0/12" rel="noreferrer" target="_blank">172.16.0.0/12</a>;<br>
>         !<a href="http://192.168.14.0/24" rel="noreferrer" target="_blank">192.168.14.0/24</a>;<br>
>         <a href="http://192.168.0.0/16" rel="noreferrer" target="_blank">192.168.0.0/16</a>;<br>
> };<br>
> <br>
> acl rfc5735 {<br>
>         <a href="http://0.0.0.0/8" rel="noreferrer" target="_blank">0.0.0.0/8</a>;<br>
>         <a href="http://169.254.0.0/16" rel="noreferrer" target="_blank">169.254.0.0/16</a>;<br>
>         <a href="http://192.0.0.0/24" rel="noreferrer" target="_blank">192.0.0.0/24</a>;<br>
>         <a href="http://192.0.2.0/24" rel="noreferrer" target="_blank">192.0.2.0/24</a>;<br>
>         <a href="http://192.88.99.0/24" rel="noreferrer" target="_blank">192.88.99.0/24</a>;<br>
>         <a href="http://198.18.0.0/15" rel="noreferrer" target="_blank">198.18.0.0/15</a>;<br>
>         <a href="http://198.51.100.0/24" rel="noreferrer" target="_blank">198.51.100.0/24</a>;<br>
>         <a href="http://203.0.113.0/24" rel="noreferrer" target="_blank">203.0.113.0/24</a>;<br>
>         <a href="http://224.0.0.0/4" rel="noreferrer" target="_blank">224.0.0.0/4</a>;<br>
> };<br>
> <br>
> options {<br>
>         directory "/var/bind";<br>
> <br>
>         // Configure the IPs to listen on here.<br>
>         listen-on {<br>
>                 127.0.0.1;<br>
>                 192.168.14.20;<br>
>         };<br>
>         listen-on-v6 {<br>
>                 none;<br>
>         };<br>
> <br>
>         allow-query {<br>
>                 trusted;<br>
>         };<br>
> <br>
>         //query-source address * port 53;<br>
> <br>
>         allow-query-cache {<br>
>                 trusted;<br>
>         };<br>
> <br>
>         blackhole { <br>
>                 rfc5735;<br>
>                 rfc1918;<br>
>         };<br>
> <br>
>         allow-transfer {<br>
>                 none;<br>
>         };<br>
> <br>
>         // Cryptographic authentication of DNS information <br>
>         // ENABLE LATER<br>
>     //dnssec-enable yes;<br>
>     //dnssec-validation yes;<br>
> <br>
>         pid-file "/var/run/named/named.pid";<br>
> <br>
>         // Changing this is NOT RECOMMENDED for a authoritative nameserver<br>
>         allow-recursion { none; };<br>
>         recursion no;<br>
> };<br>
> <br>
> zone "example.home" {<br>
>   type master;<br>
>   file "/etc/bind/db.example.home.zone";<br>
> };<br>
> <br>
> zone "14.168.192.in-addr.arpa" {<br>
>   type master;<br>
>   file "/etc/bind/db.14.168.192.zone";<br>
> };<br>
> <br>
> <br>
> <br>
> ; ZONE file for example.home.<br>
> ;<br>
> $TTL  604800<br>
> @     IN      SOA     ns2.example.home. hostmaster.example.home. (<br>
> 2     ; Serial<br>
> 604800        ; Refresh 1week<br>
> 86400 ; Retry<br>
> 2419200       ; Expire 28days<br>
> 604800        ; Negative Cache TTL<br>
> )<br>
> ;; name servers (NS)<br>
> ;; only authoritative servers<br>
> @             IN      NS      ns2.example.home.<br>
> ns2   IN      A       192.168.14.20<br>
> ;; hosts (A)<br>
> ns1         IN  A   192.168.14.10<br>
> c1          IN  A   192.168.14.1<br>
> <br>
> ;; alias (CNAME)<br>
> client IN     CNAME   c1<br>
> <br>
> <br>
> <br>
> ; ZONE file for 14.168.192.in-addr.arpa.<br>
> ;<br>
> $TTL  604800<br>
> @     IN      SOA     ns2.example.home. hostmaster.example.home. (<br>
> 1   ; Serial<br>
> 604800        ; Refresh 1week<br>
> 86400 ; Retry<br>
> 2419200       ; Expire 28days<br>
> 604800        ; Negative Cache TTL<br>
> )<br>
> ;; name servers (NS)<br>
> ;; only authoritative servers<br>
> @   IN        NS      ns2.example.home.<br>
> 20  IN        PTR     ns2.example.home.<br>
> ;; pointer records (PTR)<br>
> 1   IN  PTR   c1.example.home.<br>
> 10  IN  PTR   ns1.example.home.<br>
> <br>
> _______________________________________________<br>
> Please visit <a href="https://lists.isc.org/mailman/listinfo/bind-users" rel="noreferrer" target="_blank">https://lists.isc.org/mailman/listinfo/bind-users</a> to unsubscribe from this list<br>
> <br>
> ISC funds the development of this software with paid support subscriptions. Contact us at <a href="https://www.isc.org/contact/" rel="noreferrer" target="_blank">https://www.isc.org/contact/</a> for more information.<br>
> <br>
> <br>
> bind-users mailing list<br>
> <a href="mailto:bind-users@lists.isc.org" target="_blank">bind-users@lists.isc.org</a><br>
> <a href="https://lists.isc.org/mailman/listinfo/bind-users" rel="noreferrer" target="_blank">https://lists.isc.org/mailman/listinfo/bind-users</a><br>
<br>
-- <br>
Mark Andrews, ISC<br>
1 Seymour St., Dundas Valley, NSW 2117, Australia<br>
PHONE: +61 2 9871 4742              INTERNET: <a href="mailto:marka@isc.org" target="_blank">marka@isc.org</a><br>
<br>
</blockquote></div>