Hi,
Following a previous thread (ie: "Selective forwarding?"), I've started
to work on a multi-server configuration within 3 sites consisting of a
primary at Site1 and secondaries at Site2/3. All sites will have DHCP
servers with DDNS enabled. The secondaries will forward the DDNS updates
to the primary. That is the ultimate goal.
For that to work, I need to make sure every separated component works as
expected when configured separately. I'll try to be as exhaustive as
possible to explain what's going on and hopefully, some expert in the
audience will find what I'm doing wrong and/or missed.
Because of historical reasons, Site1 is still using Ubuntu 14.04 and the
future Site2/3 will be using Ubuntu 18.04. There will be an upgrade but
it must happen after Sites2/3 are operational.
Site1 : Bind 9.9.5.dfsg-3ubuntu0.18 (upgradable to 9.10.3.dfsg.P4 max)
Site2/3 : Will be 9.11.3+dfsg-1ubuntu1.3 but does not matter right now
I've setup the most basic configuration with a fake "domain.tld" zone to
play with. The configuration is attached. Yes, there are redundancies
with the ACL lists but this is a sandbox and it tries to mimic the final
configuration which will be a bit more complex of course.
The "_key_dhcp" and "_key_domain_tld" files are shaped exactly as
"rndc-key" and were generated with the same "rndc-confgen" tool.
The zones files are in their simplest form with minimal data to play with.
So, here we go :
With this configuration, everything works as expected, I can query the
forward and reverse records without problem.
From another host, I try an AXFR :
# dig @10.3.13.53 domain.tld axfr
; <<>> DiG 9.9.5-3ubuntu0.18-Ubuntu <<>> @10.3.13.53 domain.tld axfr
; (1 server found)
;; global options: +cmd
; Transfer failed.
Good! Not allowed by default.
# dig @10.3.13.53 domain.tld axfr -k /path/to/_key_domain_tld
; <<>> DiG 9.9.5-3ubuntu0.18-Ubuntu <<>> @10.3.13.53 domain.tld axfr -k
/etc/bind/_key_domain_tld
; (1 server found)
;; global options: +cmd
domain.tld. 604800 IN SOA dns1.domain.tld.
root.domain.tld. 2019012901 86400 86400 172800 172800
domain.tld. 604800 IN NS dns1.domain.tld.
domain.tld. 604800 IN A 10.3.13.53
desk.domain.tld. 604800 IN A 10.3.13.1
dns1.domain.tld. 604800 IN A 10.3.13.53
gw.domain.tld. 604800 IN A 10.3.13.254
domain.tld. 604800 IN SOA dns1.domain.tld.
root.domain.tld. 2019012901 86400 86400 172800 172800
key-domain.tld. 0 ANY TSIG
hmac-md5.sig-alg.reg.int. 1548745164 300 16 UmYQnMNceR1jIbUufch7Rg==
14158 NOERROR 0
;; Query time: 0 msec
;; SERVER: 10.3.13.53#53(10.3.13.53)
;; WHEN: Tue Jan 29 07:59:24 CET 2019
;; XFR size: 7 records (messages 1, bytes 280)
Perfect! With the correct key, it works.
Now, the trouble really begins :
1/ I update the zones files to uncomment the "test" record and update
the serial number
2/ I update "named.conf" to uncomment the "allow-update" statement using
"key-dhcp"
3/ "named-checkconf" does not complain so "rndc reload"!
Problem : The syslog messages don't show the lines indicating that the
zones have been reloaded, here's an extract :
Jan 29 08:12:43 dns53 named[3075]: received control channel command 'reload'
Jan 29 08:12:43 dns53 named[3075]: loading configuration from
'/etc/bind/named.conf'
Jan 29 08:12:43 dns53 named[3075]: reading built-in trusted keys from
file '/etc/bind/bind.keys'
Jan 29 08:12:43 dns53 named[3075]: using default UDP/IPv4 port range:
[1024, 65535]
Jan 29 08:12:43 dns53 named[3075]: using default UDP/IPv6 port range:
[1024, 65535]
Jan 29 08:12:43 dns53 named[3075]: sizing zone task pool based on 7 zones
Jan 29 08:12:43 dns53 named[3075]: automatic empty zone: view LAN:
10.IN-ADDR.ARPA
Jan 29 08:12:43 dns53 named[3075]: automatic empty zone: view LAN:
16.172.IN-ADDR.ARPA
Jan 29 08:12:43 dns53 named[3075]: automatic empty zone: view LAN:
17.172.IN-ADDR.ARPA
[...]
Jan 29 08:12:43 dns53 named[3075]: automatic empty zone: view LAN:
9.E.F.IP6.ARPA
Jan 29 08:12:43 dns53 named[3075]: automatic empty zone: view LAN:
A.E.F.IP6.ARPA
Jan 29 08:12:43 dns53 named[3075]: automatic empty zone: view LAN:
B.E.F.IP6.ARPA
Jan 29 08:12:43 dns53 named[3075]: automatic empty zone: view LAN:
8.B.D.0.1.0.0.2.IP6.ARPA
Jan 29 08:12:43 dns53 named[3075]: reloading configuration succeeded
Jan 29 08:12:43 dns53 named[3075]: reloading zones succeeded
Jan 29 08:12:43 dns53 named[3075]: all zones loaded
Jan 29 08:12:43 dns53 named[3075]: running
I was expecting the usual messages after a zone change, like previously:
Jan 29 07:48:23 dns53 named[2684]: reloading configuration succeeded
Jan 29 07:48:23 dns53 named[2684]: reloading zones succeeded
Jan 29 07:48:23 dns53 named[2684]: zone 13.3.10.in-addr.arpa/IN/LAN:
loaded serial 2019012902
Jan 29 07:48:23 dns53 named[2684]: zone domain.tld/IN/LAN: loaded serial
2019012902
Jan 29 07:48:23 dns53 named[2684]: all zones loaded
Jan 29 07:48:23 dns53 named[2684]: running
So now, with the new "allow-update" statement, the zones are not
reloaded and this is confirmed by "dig" :
# dig @10.3.13.53 test.domain.tld
; <<>> DiG 9.9.5-3ubuntu0.18-Ubuntu <<>> @10.3.13.53 test.domain.tld
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 3395
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;test.domain.tld. IN A
;; AUTHORITY SECTION:
domain.tld. 172800 IN SOA dns1.domain.tld.
root.domain.tld. 2019012901 86400 86400 172800 172800
;; Query time: 0 msec
;; SERVER: 10.3.13.53#53(10.3.13.53)
;; WHEN: Tue Jan 29 08:12:54 CET 2019
;; MSG SIZE rcvd: 90
The new record "test.domain.tld" is not found and the serial is not the
new one!
I've tested dozens of combinations with both "allow-transfer" and
"allow-update" by putting them at the "view" level, "options" level,
"global" level, etc. and nothing changed.
The directoty "/etc/bind" and its contents seem in good shape :
# ls -lA -d /etc/bind
drwxr-sr-x 3 root bind 4096 Jan 29 08:04 /etc/bind
# ls -lA /etc/bind
total 68
-rw-r--r-- 1 root root 3954 Sep 19 15:15 bind.keys
drwxrwsr-x 2 root bind 4096 Jan 29 07:55 data
-rw-r--r-- 1 root root 237 Sep 19 15:15 db.0
-rw-r--r-- 1 root root 271 Sep 19 15:15 db.127
-rw-r--r-- 1 root root 237 Sep 19 15:15 db.255
-rw-r--r-- 1 root root 353 Sep 19 15:15 db.empty
-rw-r--r-- 1 root root 270 Sep 19 15:15 db.local
-rw-r--r-- 1 root root 3048 Sep 19 15:15 db.root
-rw-r--r-- 1 root bind 83 Jan 29 07:32 _key_dhcp
-rw-r--r-- 1 root bind 83 Jan 29 07:25 _key_domain_tld
-rw-r--r-- 1 root bind 1565 Jan 29 07:55 named.conf
-rw-r--r-- 1 root bind 490 Sep 19 15:15 named.conf.default-zones
-rw-r--r-- 1 root bind 165 Sep 19 15:15 named.conf.local
-rw-r--r-- 1 root bind 890 Jan 28 10:19 named.conf.options
-rw-r--r-- 1 root bind 463 Sep 19 15:15 named.conf_ORIG
-rw-r----- 1 bind bind 77 Jan 28 10:19 rndc.key
-rw-r--r-- 1 root root 1317 Sep 19 15:15 zones.rfc1918
# ls -lA /etc/bind/data/
total 8
-rw-rw-r-- 1 root bind 632 Jan 29 07:55 _domain.tld.rev
-rw-rw-r-- 1 root bind 688 Jan 29 07:55 _domain.tld.zone
So for now I'm lost and I need an expert's PoV to point what I'm doing
wrong and/or what I missed!
Sorry for the very long message but I guess the more thorough I'll be,
the more effective everybody will be :-)
Thank you for any useful clue.
--
ObNox
# ACL
acl acl_ThisHost {
127.0.0.1;
10.3.13.53;
};
acl acl_Listeners {
127.0.0.1;
10.3.13.53;
};
acl acl_LAN {
10.3.13.0/24;
};
acl acl_Secondary {
10.3.13.153;
};
# Options
options {
directory "/var/cache/bind";
listen-on {
acl_Listeners;
};
};
# Controls
key "rndc-key" {
algorithm hmac-md5;
secret "lIsLwDjPIbtv3yHg7wM7Hw==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
include "/etc/bind/_key_dhcp";
include "/etc/bind/_key_domain_tld";
# Views
view "LAN" {
match-clients {
acl_ThisHost;
acl_LAN;
acl_Secondary;
};
allow-query {
acl_ThisHost;
acl_LAN;
acl_Secondary;
};
recursion yes;
zone "domain.tld" {
type master;
file "/etc/bind/data/_domain.tld.zone";
allow-transfer {
key "key-domain.tld";
};
#allow-update {
# key "key-dhcp";
#};
};
zone "13.3.10.in-addr.arpa" {
type master;
file "/etc/bind/data/_domain.tld.rev";
allow-transfer {
key "key-domain.tld";
};
#allow-update {
# key "key-dhcp";
#};
};
# Default
include "/etc/bind/named.conf.default-zones";
};
;# Reverse zone: domain.tld
$TTL 604800
@ SOA dns1.domain.tld. dnsmaster.domain.tld. (
2019012901 ; Serial
1H ; Refresh
1H ; Retry
1D ; Expire
1D ) ; Negative Cache TTL
@ NS dns1.domain.tld.
254 PTR gw.domain.tld.
1 PTR desk.domain.tld.
;2 PTR test.domain.tld.
;# Forward zone : domain.tld
$TTL 604800
@ SOA dns1.domain.tld. root.domain.tld. (
2019012901 ; Serial
1D ; Refresh
1D ; Retry
2D ; Expire
2D ) ; Negative Cache TTL
@ NS dns1.domain.tld.
@ A 10.3.13.53
dns1 A 10.3.13.53
gw A 10.3.13.254
desk A 10.3.13.1
;test A 10.3.13.2
_______________________________________________
Please visit https://lists.isc.org/mailman/listinfo/bind-users to unsubscribe
from this list
bind-users mailing list
bind-users@lists.isc.org
https://lists.isc.org/mailman/listinfo/bind-users