DNS server that replies the same address ("127.0.0.1" by default) to all type A queries and NXDOMAIN to any other query.
It's often useful during development to access local services using a local domain. Existing options are:
- Add them all to
/etc/hosts(quickly becomes a mess, have to list all subdomains)
- Run a DNS server like BIND (complex configuration)
- Run a DNS proxy like Dnsmasq (reasonable option but still needs configuration)
Using devdns you just need to download a binary and run it. It works best with the OS X
resolver system (see below).
Build (or download the OS X binary) and then run
./devdns. By default it listens on
127.0.0.1:5300 (UDP), you can specify an alternative address as follows:
On OS X you can use the resolver system (
man 5 resolver) to resolve only a chosen few domains to this local server:
sudo mkdir -p /etc/resolver # all domains ending in ".dev" sudo vi /etc/resolver/dev
Contents of /etc/resolver/dev:
nameserver 127.0.0.1 port 5300
If you want to change the resolved address from the
127.0.0.1 default to another (virtual) machine you can change it as follows:
Should you need to specify different resolved addresses for different host names you can run multiple instances of devdns on different listening addresses and change the
/etc/resolver config accordingly. However at that point it might be easier to use Dnsmasq.
Build using the standard go tools:
go get . go build
go build -ldflags "-w" to build a version without debug symbols (smaller binary).