Allow me first to set the scene.
We used to use Bind9, but ditched it in favour of PowerDNS, because, frankly, Bind sucks.
We have a "primary" zone in our DNS master. london.wibblesplat.com
There's other zones too, oob.london.wibblesplat.com
The majority of addresses in the non-oob zone are in the range 192.168.0.0/16.
The IP of the dns-1 server is 192.168.123.140
. (I'm not sure if this is relevant).
I wanted to add some out-of-band (oob) access IPs to the oob.london.wibblesplat.com zone in the range 172.16.254.0/24
This is what's in the database that drives powerdns.
powerdns=# select * from records where name like '%switch%';
id | domain_id | name | type | content | ttl | prio | change_date | ordername | auth
--------+-----------+----------------------------------------------------+------+---------------+------+------+-------------+-----------+------
190709 | 24 | renderchassis-1-switch-A1.london.wibblesplat.com | A | 172.16.254.12 | 3600 | 0 | 1328715923 | |
190710 | 24 | renderchassis-1-switch-A2.london.wibblesplat.com | A | 172.16.254.3 | 3600 | 0 | 1328715923 | |
190711 | 24 | renderchassis-2-switch-A1.london.wibblesplat.com | A | 172.16.254.2 | 3600 | 0 | 1328715923 | |
190712 | 24 | renderchassis-2-switch-A2.london.wibblesplat.com | A | 172.16.254.13 | 3600 | 0 | 1328715923 | |
(4 rows)
This is what dig says.
tom.oconnor@charcoal-black:~$ dig renderchassis-1-switch-A1 +search
; <<>> DiG 9.7.0-P1 <<>> renderchassis-1-switch-A1 +search
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 28586
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;renderchassis-1-switch-A1.london.wibblesplat.com. IN A
;; AUTHORITY SECTION:
london.wibblesplat.com. 1800 IN SOA dns1.london.wibblesplat.com. hostmaster.london.wibblesplat.com. 2012020803 28800 7200 604800 86400
;; Query time: 2 msec
;; SERVER: 192.168.123.140#53(192.168.123.140)
;; WHEN: Wed Feb 8 15:58:53 2012
;; MSG SIZE rcvd: 120
Why is PowerDNS not serving the record? It exists. The query should be fine. Is there something weird about zones not being served if the A record isn't in the subnet the server has access to? (I can't see this being right, what if I wanted (for whatever reason) to re-publish an A record for 8.8.8.8 or whatever).
Any thoughts?
EDIT:
The plot thickens. Out of interest, I nuked the old records, and added some new, shorter ones.
powerdns=# select * from records where name like '%rc1sw%' or content like '%rc1sw%';
id | domain_id | name | type | content | ttl | prio | change_date | ordername | auth
--------+-----------+-----------------------------+------+---------------+------+------+-------------+-----------+------
190810 | 23 | rc1sw1.london.wibblesplat.com | A | 172.16.254.12 | 3600 | 0 | 1328720986 | |
190811 | 23 | rc1sw2.london.wibblesplat.com | A | 172.16.254.3 | 3600 | 0 | 1328720999 |
|
And now.. tom.oconnor@charcoal-black:~$ dig rc1sw1 +search
; <<>> DiG 9.7.0-P1 <<>> rc1sw1 +search
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32849
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;rc1sw1.london.wibblesplat.com. IN A
;; ANSWER SECTION:
rc1sw1.london.wibblesplat.com. 3600 IN A 172.16.254.12
;; Query time: 0 msec
;; SERVER: 192.168.123.140#53(192.168.123.140)
;; WHEN: Wed Feb 8 17:10:35 2012
;; MSG SIZE rcvd: 61
And it works.
Seems Powerdns might not like so many -
characters in a Name. I'll bear that in mind, and carry on. Still, an answer might be nice.
OK, it's the -A1 it doesn't like.
Have a look at this.
powerdns=# select * from records order by id desc limit 5;
id | domain_id | name | type | content | ttl | prio | change_date | ordername | auth
--------+-----------+---------------------------------+------+---------------------------------+------+------+-------------+-----------+------
190830 | 23 | bunt-1-A1.london.wibblesplat.com | A | 127.0.0.1 | 120 | 0 | 1328722058 | |
190829 | 22 | 80.124.168.192.in-addr.arpa. | PTR | claret-red.london.wibblesplat.com | 3600 | 0 | 1328722007 | |
190828 | 23 | claret-red.london.wibblesplat.com | A | 192.168.124.80 | 3600 | 0 | 1328722007 | |
190825 | 23 | BUNT.london.wibblesplat.com | A | 127.0.0.1 | 120 | 0 | 1328721975 | |
190824 | 23 | bunt.london.wibblesplat.com | A | 127.0.0.1 | 120 | 0 | 1328721967 |
|
and
tom.oconnor@charcoal-black:~$ dig bunt +search
; <<>> DiG 9.7.0-P1 <<>> bunt +search
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34027
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;bunt.london.wibblesplat.com. IN A
;; ANSWER SECTION:
bunt.london.wibblesplat.com. 120 IN A 127.0.0.1
;; Query time: 1 msec
;; SERVER: 192.168.123.140#53(192.168.123.140)
;; WHEN: Wed Feb 8 17:27:15 2012
;; MSG SIZE rcvd: 59
tom.oconnor@charcoal-black:~$ dig BUNT +search
; <<>> DiG 9.7.0-P1 <<>> BUNT +search
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60125
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;BUNT.london.wibblesplat.com. IN A
;; ANSWER SECTION:
BUNT.london.wibblesplat.com. 120 IN A 127.0.0.1
;; Query time: 0 msec
;; SERVER: 192.168.123.140#53(192.168.123.140)
;; WHEN: Wed Feb 8 17:27:20 2012
;; MSG SIZE rcvd: 59
tom.oconnor@charcoal-black:~$ dig bunt-1-A1 +search
; <<>> DiG 9.7.0-P1 <<>> bunt-1-A1 +search
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 22009
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
; ; QUESTION SECTION:
;bunt-1-A1. IN A
;; AUTHORITY SECTION:
. 1800 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2012020801 1800 900 604800 86400
;; Query time: 59 msec
;; SERVER: 192.168.123.140#53(192.168.123.140)
;; WHEN: Wed Feb 8 17:27:53 2012
;; MSG SIZE rcvd: 102
PostgreSQL, at least under the default PowerDNS table schema, is case sensitive. PowerDNS lowercases all queries. So, make sure to always lowercase your names.
So, It looks like PowerDNS has a massive thing about uppercase strings in certain configurations.
It'll accept BUNT and bunt, but not bunt-1-A1 or variants thereof.
See the edits on the Question, and this block of digs.