Tuesday, September 2, 2008

MaraDNS snapshot update: FreeBSD logging issues resolved

Since someone who is sponsoring MaraDNS a little uses FreeBSD on the server side, yesterday I downloaded VMware player, and a FreeBSD 7.0 image at ThoughtPolice.co.uk.

I was able to reproduce and resolve the problem with "duende" (MaraDNS' daemonizer) not logging messages.

There are two ways of resolving it, one that the sysadmin can implement, and one that I have implemented.

It would appear that FreeBSD's syslog daemon does not log Duende's messages by default. In order to fix this, we first must create a /var/log/daemon file, which will log all of MaraDNS' messages (or any other messages created by a program that logs files with a "facility" of LOG_DAEMON and a priority of LOG_INFO).

Next, we need to edit /etc/syslog.conf to add a line like this:

daemon.info /var/log/daemon

Please be sure to add this line *before* any lines that begin with a '!' character or a '+' character in the /etc/syslog.conf file.

This is the fix for MaraDNS 1.2 and stable MaraDNS 1.3.

For the development 1.3 branch, I changed the Duende code to have it so, when compiled in FreeBSD (#ifdef __FREEBSD__), it logs messages as "daemon.alert" (which is logged in FreeBSD's default /etc/syslog.conf) instead of "daemon.info" (which isn't logged).

I have updated the MaraDNS snapshot to incorporate this change:

http://www.maradns.org/download/snap/1.3/200809/

It took me about a day to find the issue and resolve this; a lot of the work was just getting FreeBSD working in VMware. Things like configuring the virtual interface VMware uses and then figuring out how to ssh to and from the VMware instance of FreeBSD (ssh 192.168.72.128 -l username). Once that was going, it didn't take too long to fix the Duende problem ("man syslog" helped a lot)