I went this route, and encountered three issues:
1. After a reload, there are out-of-zone warnings for hosts in
example.org:
25-Oct-2013 16:02:49.330 general: warning:
dynamic/
example.org/example.org.db:133: ignoring out-of-zone data
(
hostname.example.org)
Both internal and external zones are called '
example.org' but each is in
a separate view. These warnings come from the
example.org zone file, the
one in the external view.
2. With two zones using the same name, I'm unsure how to use rndc to
reload just the internal or just the external version since both use the
same name.
3. Another internal nameserver gets intermittent dig +dnssec errors on
queries for internal resources. Sometimes after a restart, the result is
NOERROR and other times it's NXDOMAIN or SERVFAIL.
This is seen on an internal recursive nameserver (let's call it NS2). I
think this might be due to the presence of external servers in the
forwarding statement. If I comment out the external forwarders and
include only one other internal server (let's call it NS1), dig lookups
always work, including DNSSEC.
Problem is, NS1 is currently an authoritative and recursive server, and
I'm trying to separate these functions. Is there some other way to build
up a cache and get DNSSEC data on NS2?
Config details below. Thanks very much for additional troubleshooting clues.
dn
This is from named.conf:
acl internal-xfer {
..
}
acl external-xfer {
..
}
acl trusted {
..
}
view "internal" in {
match-clients { trusted; };
recursion yes;
additional-from-auth yes;
additional-from-cache yes;
..
zone "
example.org" in {
type master;
file "dynamic/
split.example.org/split.example.org.db";
allow-query { trusted; };
allow-transfer { internal-xfer; };
// internal and external zones use same key
key-directory "managed-keys/
example.org";
inline-signing yes;
auto-dnssec maintain;
};
..
};
view "external" in {
match-clients { any; };
recursion no;
additional-from-auth no;
additional-from-cache no;
..
zone "
example.org" in {
type master;
file "dynamic/
example.org/example.org.db";
allow-query { any; };
allow-transfer { external-xfer; };
// internal and external zones use same key
key-directory "managed-keys/
example.org";
inline-signing yes;
auto-dnssec maintain;
};
..
};
Here is the internal split.example.org.db zone file:
$TTL 1h
internal.example.org. IN SOA
ns.example.org.
hostmaster.example.org. (
2013102500 ; serial
1h ; refresh
15m ; retry
28d ; expire
1h ) ; minimum
example.org. IN NS
ns.example.org.
example.org. IN NS
ns2.example.org.
example.org. IN MX 10
mail.example.org.
example.org. IN MX 100
mail2.example.org.
example.org. IN A 10.0.0.10
mail.example.org. IN A 10.0.0.20
mail2.example.org. IN A 10.0.0.21
ns.example.org. IN A 10.0.0.30
ns2.example.org. IN A 10.0.0.31
..
; delegation, glue, and DS records for
internal.example.org
internal.example.org. IN NS
ns100.internal.example.org.
internal.example.org. IN NS
ns101.internal.example.org.
ns100.internal.example.org. IN A 10.0.0.100
ns101.internal.example.org. IN A 10.0.0.101
internal.example.org. IN DS 48835 8 1 C142...
internal.example.org. IN DS 48835 8 2 DFDE...
And here is the external example.org.db zone file:
$TTL 1h
example.org. 3600 IN SOA
ns2.example.org.
hostmaster.example.org (
2013102301 ; serial
3600 ; refresh (1 hour)
900 ; retry (15 minutes)
2419200 ; expire (4 weeks)
3600 ; minimum (1 hour)
)
example.org. 3600 IN A 666.1.2.3
example.org. 3600 IN AAAA 1234:dead:beef::123
example.org. 3600 IN NS
ns.example.org.
example.org. 3600 IN NS
goodbuddy.secondary.com.
example.org. 3600 IN MX 10
mail.example.org.
ns2.example.org. 3600 IN A 666.1.2.4
mail.example.org. 3600 IN A 666.1.2.5
hostname.example.org 3600 IN A 666.1.2.6
..