New Mac – DNS (BIND), Part 1.5

Well, I got somewhere with this, but it merits only a point increment in title. There really haven’t been any changes to what was discussed last time, but the accessibility of that functionality is greatly improved.

So, with no further ado, I’m releasing a widget for users of Mac OS X (>= 10.4.3) named RunBIND. For those of you who noticed the pun, I apologize—I even had to restructure my sentence to get it in there.

RunBIND

So, a little bit about RunBIND 0.1:

  • It doesn’t do everything I want it to do.
  • It doesn’t look good.
  • It has only been tested on OS X 10.5.5.
  • There are known limitations.
  • There are known bugs.

In short, I can’t think of many reasons why you would want to use it. Then again, maybe you like to live dangerously. In that case you can download it here (this link may self-destruct upon release of version 0.2). So, if you’re still reading and possibly interested, here is what it does right now:

  • Enables or disables BIND.
  • Tells all network services to use 127.0.0.1 as a DNS server.

That wouldn’t be all that impressive if it weren’t so easy. After installing the widget it will ask you for your password and then go through an initialization process. Then a button that says “Enable BIND” will appear. Whatever you do, don’t click that button if you don’t want to run BIND, because if you click that button it’ll do it! I’m warning you! However, because I planned on the fact that you might click that button, no matter how much I warned you, you’re protected. After clicking the dreaded button it immediately changes to “Disable BIND” for those who can’t follow directions. And that is pretty much it.

Keeping in mind my eventual goal (making web development and testing on a Mac “just work”) it will eventually support all of these wonderful features:

  • Allow you to enable and disable BIND.
  • Ensure that the local DNS is used on only selected network services.
  • Allow for clearing of the local DNS cache with a single click.
  • Allow virtual machines (under VMware Fusion) to resolve to this DNS automatically.
  • Maintain this service in spite of all possible network setup changes.
  • Provide update notifications so that you can always run the latest and greatest.

But what does that have to do with making web development on a Mac easy? Nothing you say!? You’re right. I must have forgotten to discuss the other half of this project, as of yet unnamed. You can think of it as almost a server rack of virtual hosts.

  • Easily creating, updating, and deleting Apache Virtual Hosts.
  • Easily creating, updating, and deleting DNS zones for the aforementioned virtual hosts.

If you could quickly and easily create virtual hosts that were accessible to both the host and guest operating systems, gosh, that would be a killer app and make web development on a Mac incredibly easy. (Wow, that is exactly what I was thinking!) All of a sudden you can test every browser known to mankind with a completely seamless testing experience all managed in one place. Even better, the similarities between a Linux server (if that is indeed what your live hosting will be) and a Mac for local development mean less trouble migrating from local development to live. Sounds like a winner to me.

And the best part about all of this is, come the end of the day, it is a learning project for me. I’ll be releasing all of the code I create for this under any license you need to be able to use it. That is right, I’m giving it away. In light of that, you can send me money:

  • To bribe me into more rapidly introducing some feature.
  • To help me recuperate some of my expenses.
  • To buy domain names for the projects.
  • Because you’re a nice person.



For those of you daring enough to try it (it serves as a local caching DNS server right now, but you could get industrious and add your own zone files), please let me know how it goes in the comments! And also, I must apologize for the tone of this post, I got carried away. I did, however, have fun doing it. I hope it didn’t remove me from your RSS feed. *grin*