Frequenly asked questions

How to I try out MaraDNS

Read the quick start guide

What license is MaraDNS released under?

None, actually. MaraDNS is relased to the public domain.

How do I get MaraDNS to bind to multiple IP addresses

The current method is to run multiple copies of MaraDNS, each using its own mararc file.

E.g:

maradns -f /etc/mararc.1
maradns -f /etc/mararc.2
etc.

If you just want to bind to all IP addresses your computer has, bind to the ip "0.0.0.0".

I don't think this will be too hard to correctly implement, since I already have code for specifying multiple IP addresses with the IP ACL code used by the zone server. Until then, I will add this workaround to the faq.

When I try to run MaraDNS, I get a Fatal error: Error running populate_main program error message.

This error message should not be visible. If it appears, subscribe to the mailing list at list-subscribe@maradns.org, and describe your problem by sending email to list@maradns.org. Be sure to include the following information:

I am trying to register a domain under the .au or the .de name space, and my registrar is not taking my domain name

Both the German registrar and the Australian registrars require a RR_ANY request to return NS and SOA records. MaraDNS can do this if you add the following line to your marcrc file:

default_rrany_set = 15

After I start MaraDNS, I can not see the process when I run netstat -na

Udp services do not have a prominent "LISTEN" when netstat is run.

When MaraDNS is up, the relevent line in the netstat output looks like this:

udp        0      0 127.0.0.4:53            0.0.0.0:* 

While on the topic of netstat, if you run netstat -nap as root, you can see the names of the processes which are providing internet services.

What string library does MaraDNS use?

MaraDNS uses her own string library, which is called the "js_string" library. Man pages for most of the functions in the js_string library are in the folder doc/man of the MaraDNS distribution

Why is MaraDNS public domain instead of BSD or GPL licensed

If I were to GPL my work, for example, I might have a hard time integrating my work with Python. Sometimes, the Python license is "GPL compatible", as decreed by the FSF, and sometimes it is not. I do not think it is particularly fair to the Python community to have the ability to integrate this program in to Python (for example, a Python DNS resolver library) be determined by the whims of the FSF.

Unlike the GPL or the BSD license, works placed under the public domain have a well defined set of legal protections. For example, no one else can copyright a public domain work (they can copyright changes, of course).

Why does MaraDNS use a multithreaded model

The multithreaded model is, plain and simple, the simplest way to write a functioning recursive DNS server. There is a reason why MaraDNS, pdnsd, and BIND 9 all use the multithreaded model.

How come there is so little content on this web page right now?

I am devoting most of my effort to making MaraDNS a fully functional DNS server. I plan to meet all of the goals in the roadmap. Getting the code out is more important than this web page. I have seen too many proposed open-source projects set up a fancy web page, a mailing list, announce their project on comp.os.linux.announce, and never actually make the proposed code.

Contrast this to MaraDNS, which is already a fully functional authoritative name server. The maradns.com and maradns.org domans are both served by MaraDNS. I spent the last few days making a fully functioning zone transfer server for MaraDNS, and optimizing the code so that it runs six times faster, instead of setting up a mailing list or putting up fluff on the MaraDNS web page.

Are there any plans to add XXX feature to MaraDNS

A number of features that users have requested are listed in the TODO file that is includes with MaraDNS. Feature requests are nice, and will be dutifully filed in the TODO file.

Feature requests which include a patch which implements the feature in question are much more likely to be added to MaraDNS proper.

Is there any process I need to follow to add a patch to MaraDNS

Yes. Send a patch to me in email, along with a statement that you place the contents of the patch in to the public domain. If I find that the patch works well, I will integrate it in to MaraDNS.

I have having problems transferring zones from MaraDNS' zone server to a BIND zone transfer client

BIND is rather picky about what kind of data it will accept from a zone server. Make sure the following is true with your domain:

Here is an example bad zone file:

Sexample.com.|86400|example.com.|hostmaster@example.com.|1|86400|3600|6048000|86400
Nbad.example.com.|86400|ns1.example.com.
Nbad.example.com.|86400|ns2.example.com.
Nsubdomain.example.com.|86400|ns.subdomain.example.com.
Aexample.com.|12345|10.2.3.4

Here is the same zone file, with corrections:

Sexample.com.|86400|example.com.|hostmaster@example.com.|1|86400|3600|6048000|86400
Nexample.com.|86400|ns1.example.com.
Nexample.com.|86400|ns2.example.com.
Aexample.com.|12345|10.2.3.4
Nsubdomain.example.com.|86400|ns.subdomain.example.com.

Is MaraDNS portable?

While I intend to have MaraDNS be a portable DNS server which will compile on a variety of unices, right now all of MaraDNS's work development is being done on Linux. I have heard that MaraDNS does not work on NetBSD at this time. In terms of proprietary oses, I know that SCO Open Server, SCO UNIXware and Solaris have issues running a UDP or TCP server in a chroot() environment. Word is that, with Solaris and UNIXware, placing /dev/tcp and /dev/udp in the chroot() jail will allow a server like MaraDNS to function.

How do I compile MaraDNS on OpenBSD?

There are two ways to do this:

To use the native thread suport you have to add -pthread to the CFLAGS.

To use the GNU pthread you need to install the pth package and add -L/usr/local/lib/pth to the linker.

(Florin Iucha provided this tip)

How do I ask for MX records in Visual Basic?

I know that this question has about nothing to do with MaraDNS, but since someone asked me this in private mail, I figure other people might want to know the answer I gave them.

I do not program in Visual Basic, so I can not assist people with this. What I do know is how to do this in C on a Linux machine--you use the res_query family of functions (man res_query).

Visual Basic, in the grand tradition of all things Microsoft, probably has no support for a DNS resolver library. In fact, I know that Visual Basic does not even have a simple SMTP client library, and that you have to pay big bucks to get one. All I can say is this: Get out your credit card and prepare to pay the big bucks for this basic level of functionality that Linux provides free out of the box.

Microsoft is good for some things. However, a cost-effective (read: libre) development system with a full network programming API is not one of them.