You may also want to take this to the DLZ users mailing list, I am really not sure the correct channel for these questions. I end up cross posting, which is probably not a good idea.

On May 11, 2009, at 3:25 PM, Mike Toler wrote:

What there is of it. It seems VERY outdated since, if I understand correctly, DLZ is now built into bind 9.5/9.6.

I have been pretty deep in the DLZ and SDB thing lately as well, getting ready to get the secondary working now.

I too would like to hear clarification on the difference of DLZ and SDB. From what I can gather, DLZ was built into BIND a while back, or support was.

I also, on RHEL, have this SDB thing. On OS X, as a test case, I do not recall having that, and just added a compile flag through a port manager to BIND.

The dates on the project are very old. The docs seem accurate, current, and fine, but a several year old date on anything leads me to a tiny bit of confusion.

I have downloaded and installed the following RPMs to my DNS server, which is a VM running RHEL 5.2:
bind-9.5.1-2.P2.el5.pp.x86_64.rpm
bind-libs-9.5.1-2.P2.el5.pp.x86_64.rpm
bind-sdb-9.5.1-2.P2.el5.pp.x86_64.rpm
bind-utils-9.5.1-2.P2.el5.pp.x86_64.rpm

Sounds like you are in the same boat as me, other than I am not in a VM. Looking over my notes, Here is what I did, maybe you just need to install the sdb or activate it?

Here is a very condensed form of the notes I took.

     yum install libtool
     yum install libcap-devel
     yum install openldap-devel
     yum install postgresql-devel
     yum install rpmbuild

     rpmbuild -bb /usr/src/redhat/SPECS/bind.spec
* Conidered editing .spec file to remove postgres, ldap and others, decided
     they are good to have, and will be needed by other installs.

rpm -ivh /usr/src/redhat/RPMS/x86_64/bind- libs-9.6.0-2.P1.x86_64.rpm
     rpm -ivh /usr/src/redhat/RPMS/x86_64/bind-9.6.0-2.P1.x86_64.rpm
rpm -ivh /usr/src/redhat/RPMS/x86_64/bind- utils-9.6.0-2.P1.x86_64.rpm rpm -ivh /usr/src/redhat/RPMS/x86_64/bind- devel-9.6.0-2.P1.x86_64.rpm

At this point, named will start, with some fiddling, but DLZ support
     is not working

     Install the sdb
rpm -ivh /usr/src/redhat/RPMS/x86_64/bind- sdb-9.6.0-2.P1.x86_64.rpm

     edited /etc/sysconfig/named
     copied /usr/share/doc/bind-9.3.4/sample/etc/* to /etc/
     copied /usr/share/doc/bind-9.3.4/sample/var/* to /var/
     edited /etc/named.conf

     At this point, I ran into SELinux issues, and fought with them.
     /etc/selinux/config set to disabled.
     To avoid restaring the server: echo 0 > /selinux/enforce

     /var/named needs to be named:named
     start and stop with sudo /etc/init.d/named start|stop|restart

     start by hand:
     /usr/sbin/named -f -d 1
     -f is foreground, and -d is debug level 1, up if desired

I have added the exact DLZ configuration from the DLZ web page, other than the IP address and userid for the DB.

I went MySql

 dlz "postgres zone" {
   database "postgres 1
   {host=int-dbs port=5432 dbname=dns_data user=postgres}
   {select zone from dns_records where zone = '%zone%'}
{select ttl, type, mx_priority, case when lower(type)='txt' then '\"' || data || '\"' when lower(type)='soa' then data || ' ' || resp_person || ' ' || serial || ' ' || refresh || ' ' || retry || ' ' || expire || ' ' || minimum else data end from dns_records where zone = '%zone%' and host = '%record%'}
   {}
{select ttl, type, host, mx_priority, case when lower(type)='txt' then '\"' || data || '\"' else data end, resp_person, serial, refresh, retry, expire,
        minimum from dns_records where zone = '%zone%'}
{select zone from xfr_table where zone = '%zone%' and client = '%client%'}";
};

I have created a duplicate of one zone in my Postgres database using the tables described (Though I used “character varying” instead of “text”)

When I start “named” (or “named_sdb”, whatever that is??),

You definitely want to make sure you are starting named_sdb, using ps look for it to confirm.

I see no reference to any attempts to get to the postgres DB. No failures, no successes, nothing. In another e-mail on the list, I saw logs that showed the loading of the postgres drivers. I don’t see that in my log files at all?

What logs are you looking at, on RHEL I see in /var/log/messages I will get a line of the build flags followed by mentions of each of the extensions for each database I am able to support.

 So . . .
1. Is there something other than the DLZ tag that needs to go into the named.conf to tell it to use a postgres DB?

No.  I have a very normal /etc/named.conf
I got named running before I even tried to get DLZ/SDB working. I made sure I could return queries to some local text file based zones.

At the bottom of the named.conf file, I added in:
include "dlz_mysql.conf";

In that file, I have the same copy and paste you took from the site but mine is for MySql.

2.      Is there some library I have not deployed that is required?

If you got a successful install, I do not think there is.

3.      Should I be running “named” or “named_sdb”?

named_sdb

4. (and my real question) can you have both “zone” and “dlz” tags in the same named.conf? Our project has a large, static set of DNS domains and a very small set of dynamic domains. I’d like to be able to take advantage of the speed of the flat files, and only hit postgres for for the dynamic sub-domains and still have only one DNS server. If it can’t do this, that will just mean I need both static and dynamic servers.

I am doing just this. There actually is a thread in the DLZ mailing list archive where I asked the exact same question. There are some zones that will just not change, and they are hit heavily. I was not wanting to have the DB hit that hard all the time when named can handle them more efficiently outside of the database.

You could install named-sdb and never use the database at all, just use flat files, it will be fine.

dlz "postgres zone" {
   database "postgres 1
   {host=int-dbs port=5432 dbname=dns_data user=postgres}
   {select zone from dns_records where zone = '%zone%'}
{select ttl, type, mx_priority, case when lower(type)='txt' then '\"' || data || '\"' when lower(type)='soa' then data || ' ' || resp_person || ' ' || serial || ' ' || refresh || ' ' || retry || ' ' || expire || ' ' || minimum else data end from dns_records where zone = '%zone%' and host = '%record%'}
   {}
{select ttl, type, host, mx_priority, case when lower(type)='txt' then '\"' || data || '\"' else data end, resp_person, serial, refresh, retry, expire,
        minimum from dns_records where zone = '%zone%'}
{select zone from xfr_table where zone = '%zone%' and client = '%client%'}";
};


It looks ok to me, though I do not use postgres. I couple hints. Open up a few terminal windows, tail your named logs, I have mine separated into three, but whatever you have, get them to a point you can look at them.

Look into the issues with threaded mode, I am not sure it applies to postgres, this issue caused me some pain.

tail -f your /var/log/messages log as well.

Restart your named, and see what you are getting.

Start it from the command line where you have control of it. Give it options such as -g -d 1 which sends it into debug mode and the -g puts messages to stdout.

Finally, for me, I turned on mysql query logging, turn on the equivalent to postgres. This will be pretty noisy if there is other stuff going on, but you need to see what is coming in here as well.

From what I remember, if when you start it on the command line with - g and you do not see something a lot like this, then you have install issues:

May 9 02:18:07 host named-sdb[29533]: adjusted limit on open files from 1024 to 1048576 May 9 02:18:07 host named-sdb[29533]: found 8 CPUs, using 1 worker thread
May  9 02:18:07 host named-sdb[29533]: using up to 4096 sockets
May 9 02:18:07 host named-sdb[29533]: SDB ldap zone database module loaded. May 9 02:18:07 host named-sdb[29533]: SDB postgreSQL DB zone database module loaded. May 9 02:18:07 host named-sdb[29533]: SDB sqlite3 DB zone database module loaded. May 9 02:18:07 host named-sdb[29533]: SDB directory DB zone database module loaded. May 9 02:18:07 host named-sdb[29533]: loading configuration from '/ etc/named.conf' May 9 02:18:07 host named-sdb[29533]: using default UDP/IPv4 port range: [1024, 65535] May 9 02:18:07 host named-sdb[29533]: using default UDP/IPv6 port range: [1024, 65535] May 9 02:18:07 host named-sdb[29533]: listening on IPv4 interface lo, 127.0.0.1#53 May 9 02:18:07 host named-sdb[29533]: listening on IPv4 interface eth0, xxx.122.xxx.18#53 May 9 02:18:07 host named-sdb[29533]: listening on IPv4 interface eth0:0, xxx.122.xxx.19#53 May 9 02:18:07 host named-sdb[29533]: listening on IPv4 interface eth0:1, xxx.122.xxx.20#53 May 9 02:18:07 host named-sdb[29533]: listening on IPv4 interface virbr0, 192.168.122.1#53 May 9 02:18:07 host named-sdb[29533]: binding TCP socket: address in use May 9 02:18:07 host named-sdb[29533]: Loading 'Mysql zone' using driver mysql May 9 02:18:07 host named-sdb[29533]: command channel listening on 127.0.0.1#953

Hope that helps, fire away with any other questions you have. RHEL is pretty new to me, but I will do my best.
--
Scott * If you contact me off list replace talklists@ with scott@ *

_______________________________________________
bind-users mailing list
bind-users@lists.isc.org
https://lists.isc.org/mailman/listinfo/bind-users

Reply via email to