msql_bind 1.0 msql_bind is an extension of BIND-4.9.3 which is maintained by Paul Vixie (paul@vix.com). mSQL is maintained by David Hughes (bambi@bond.edu.au). msql_bind is maintained by Chris Seawood (mgrcls@nextwork.rose-hulman.edu). msql_bind loses none of the functionality of stock BIND, yet adds features like adding machines, changing machine information, and adding zones (not throughly tested), without having to restart your named daemon or changing multiple .db files. (Note: adding zones requires editing your /etc/named.boot) msql_bind can also be run without using a db, but currently treats every entry as static, defeating the purpose of msql_bind. Requirements: ------------ msql_bind requires the mSQL package, preferably 1.0.5 or higher. The latest version of mSQL can be found at bond.edu.au:/pub/Minerva/msql. Files: ------ model.bind : the basic tables needed to run msql bind_admin : perl script to enter, remove, edit, and list dns entries. zone_admin : perl script to enter, remove, edit, and list zone entries. read_dnswalk : perl script to read axfr files generated by dnswalk dnswalk : perl script from bind 4.9.3 pkg, dumps current zone contents to a file msql.dom : a sample .db file that contains a valid msql_bind line bind-4.9.3-BETA24.950802.cdiff : patch against stock bind-4.9.3-BETA24 How it works: ------------ 1. You must have a mSQL database: `msqladmin create dbname` 2. You must create the tables for msql_bind by using the model.bind file: `msql dbname < model.bind` *WARNING*: this will remove any existing tables with the names msql_dns and msql_zones. 3. Before you shutdown your existing named, you need to run dnswalk for each of your zones. (Ex: dnswalk rose-hulman.edu. , dnswalk cs.rose-hulman.edu., etc.) 4. You need to run read_dnswalk to place entries into your database. (Ex: read_dnswalk dbname cs.rose-hulman.edu. edu/rose-hulman/cs/axfr ) 5. You must edit your named.boot to reference msql.dom instead of your current .db files. Note: a msql_bind line can be used in any .db file at any place (after the SOA & NS records, of course), so that you can use the database for only select entries. Make sure that msqld is running on your choosen msqlserver and you are all set. Internals: ---------- This will/should contain all of the pertinent info about msql_bind. The key element of msql_bind is time. The tables used by msql_bind are: Note: the '\g' are commands to msql to complete a query, and are needed. CREATE TABLE msql_dns ( dns_entry int primary key, zoneid int not null, machine char(40) not null, class char(10) not null, type char(10) not null, info char(127) not null, assigned_time int not null, importance int not null, dynamic int not null ) \g CREATE TABLE msql_zones ( name char(40) primary key, zoneid int not null ) \g The machine, class, type, and info fields are almost self-explanatory. They mimic values used in flatfiles. The zoneid field maps to a certain zone in the zones table. This allows you to have query entries for local domai ns w/o having to use the fqdn. For example, if I have the following row: 'purple',2,'IN','A','137.112.3.11',0,4,0 with zone entries 'nextwork.',2 'nextwork.rose-hulman.edu.',2 Then from the subdomain cs.rose-hulman.edu, I could lookup purple.nextwork instead/in addition to purple.nextwork.rose-hulman.edu Note: each domain must end with a "." msql_bind will *not* work otherwise The key element behind msql_bind is the assigned_time field. All updates are made based upon the value of this field verses the last updated time. The bind_admin script automatically places the current time whenever you add or edit an entry. The importance field is used to distinguish between different types of entries. SOA entries have importance of 1, NS -- 2, other records for the SOA table (A is the only one that comes to mind) -- 3, everything else 4. The dynamic field is self-explanatory. The reason it is used is to remove the old entries (if it can find them) from the cache, before it adds new entries. Otherwise, you'll have multiple A record for one host. This is alright for your multi-homed machines, but for laptop on the move, it's disasterous. Changes were made to the following files: conf/options.h : added #define MSQL named/db_defs.h : added d_dynamic to struct databuf named/db_load.c : added routines to db_load() to read from msql db named/db_update.c : added code to remove duplicate entries if d_dynamic flag is set named/ns_defs.h : added z_db* entries to struct zoneinfo named/ns_glob.h : added global usingMsql var. named/ns_init.c : added msql_update_check() named/ns_maint.c : added code to query db at a given rate, and reload the nameserver after another period of time
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.