Re: [Bind-dlz-testers] Question on zone qualification in DLZ
Brought to you by:
crodster
From: Ross V. <ro...@ka...> - 2006-07-31 19:39:38
|
On Fri, Jul 28, 2006 at 08:15:46AM -0700, Rob Butler wrote: > Yes, you are correct and Bind does all of its data > validation during load time. DLZ expects the data in > your DB to be correct. Yea, I figured that this was the case. The few times we have run into bad DB data have been when we do not have a tool that can automatically generate the record required. This is wheere manual mucking about starts to happen... > The easiest thing to build right now would be a script > that pulled the data out of the DLZ DB and created a > zone file. Load that zone file into an instance of > Bind to determine if there are any errors. If Bind > doesn't choke, everything's ok. Of course this > instance of Bind is used only for checking the data > and never really serves data. I believe Bind might > come with a utility to check zone files and you could > use that instead of running a "dummy" version of Bind. > > I wouldn't recommend putting the validation checking > logic into DLZ itself because that would severely > decrease the performance of DLZ. It is best to have > something external to it that performs the validation. In retrospect, it would've been smart for us to design our database schema to protect bind's innards by default. ie, our table looks like this, which is a mistake: mysql> describe dns_records; +-------------+------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+------------+------+-----+---------+----------------+ | id | int(11) | | PRI | NULL | auto_increment | | zone | text | | MUL | | | | host | text | | MUL | | | | type | text | YES | MUL | NULL | | | data | text | | | | | | ttl | int(11) | YES | | NULL | | | mx_priority | int(11) | YES | | NULL | | | refresh | int(11) | YES | | NULL | | | retry | int(11) | YES | | NULL | | | expire | int(11) | YES | | NULL | | | minimum | int(11) | YES | | NULL | | | serial | bigint(20) | YES | | NULL | | | resp_person | text | YES | | NULL | | | primary_ns | text | YES | | NULL | | +-------------+------------+------+-----+---------+----------------+ 14 rows in set (0.00 sec) It really should be more like this: mysql> describe dns_records_improved; +-------------+------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+------------+------+-----+---------+----------------+ | id | int(11) | | PRI | NULL | auto_increment | | zone | varchar(X) | | MUL | | | | host | varchar(X) | | MUL | | | | type | varchar(X) | YES | MUL | NULL | | | data | varchar(X) | | | | | | ttl | int(11) | YES | | NULL | | | mx_priority | int(11) | YES | | NULL | | | refresh | int(11) | YES | | NULL | | | retry | int(11) | YES | | NULL | | | expire | int(11) | YES | | NULL | | | minimum | int(11) | YES | | NULL | | | serial | bigint(20) | YES | | NULL | | | resp_person | varchar(X) | YES | | NULL | | | primary_ns | varchar(X) | YES | | NULL | | +-------------+------------+------+-----+---------+----------------+ 14 rows in set (0.00 sec) > I'm > happy to say, work down that path has begun and so has > other interesting things for the future of DLZ. > Unfortunately for your current need, the management > application is the 3rd in line three DNS related > projects I am working on. I understand that. We have a staging copy of DLZ around. I'll probably dump out our database, import it there, and see if I can whip up a script one night. Depending on how useful it ends up being, maybe I'll post it for public consumption. -- Ross Vandegrift ro...@ka... "The good Christian should beware of mathematicians, and all those who make empty prophecies. The danger already exists that the mathematicians have made a covenant with the devil to darken the spirit and to confine man in the bonds of Hell." --St. Augustine, De Genesi ad Litteram, Book II, xviii, 37 |