Deadwood has a far cleaner code base and is more enterprise-ready than MaraDNS 1's recursive resolver, but it can not do this easily. As I explained to Phil:
To do this will require running MaraDNS 2.0 (or better, MicroDNS: http://samiam.org/software/microdns.html) on one IP while running Deadwood on another IP. Deadwood is strictly a caching DNS server and my free time ran out before I could merge it with MaraDNS' authoritative code.Phil did not have a setup where he could easily run two different servers on two different IPs, so I explained to him that MaraDNS 1 can do this. Of course, MaraDNS 1.0 has a number of disadvantages -- there is a reason I spent three years writing Deadwood, after all. As I explained to him:Do you have a setup where you can run two different DNS servers on two different IPs? Even if you only have one Windows machine, you can install Linux in Virtual Box or VMWare and use "bridged networking" to give your machine a second IP.
So, on to the solution:The old MaraDNS code became too messy to readily maintain, so I had to completely rewrite the code. The new code is good, but multiple IPs are currently needed to have certain domains give certain replies.
[...]
MaraDNS 1's recursive resolver is very much deprecated and is no longer being actively developed.
[...]
Mara v1 will work fine on newer networks (DNS hasn't changed very much) -- it won't work once IPv6 takes over, but that's a couple of years over the horizon. It will do what you need -- its problem is that it isn't the best solution for enterprise-class servers.
[...]
Yes, it will work with Windows 7 ; just be sure to open the firewall when prompted. Also, MaraDNS 1 will happily answer questions about IPv6 records as long as upstream_servers, not root_servers is used -- but uses IPv4 to answer the questions.
# Win32-specific MaraRC file; this makes a basic recursive DNS # server. ipv4_bind_addresses = "127.0.0.1" recursive_acl = "127.0.0.1/8" timestamp_type = 2 upstream_servers = {} upstream_servers["."] = "8.8.8.8, 8.8.4.4" csv2 = {} csv2["example.com."] = "db.example.com"
Yes, the example.com above is not a typo. Even though the record we are changing is in another domain, the above will work in MaraDNS 1 -- MaraDNS accepts out-of-bailiwick entries in zone files like this (it changes the AA bit, but that's fine for this purpose).
somename.maradns. 10.1.2.3
maradns -f mararc
I would like to thank Phil Harlow for his donation that made this blog entry possible. To post a comment about an entry, send me an email and I may or may not post your comment (with or without editing)