simple-dns-proxy v0.0.3
simple-dns-proxy
Description
simple-dns-proxy is very simple tool that sets up a DNS server that will provide
customized responses to certain queries while letting the rest go through an upstream
DNS server, this is, acting like a proxy.
This can be useful when you don't have access to the DNS records for a domain or just want to fake the response for testing purposes.
For instance, imagine you're developing an application that allows registered users to
have their own subdomain on your site, something like <username>.my-app.com. You can
easily test this scenario on your development machine using simple-dns-proxy:
simple-dns-proxy *.my-app.com:A:127.0.0.1Installation
npm install -g simple-dns-proxyUsage
simple-dns-proxy *.mydomain.com:A:127.0.0.1 -u 8.8.8.8The above will run a DNS server listening on UDP port 53 (the default DNS service port)
that will resolve A queries for ANY subdomain of the domain mydomain.com with the IP
address 127.0.0.1. Any other request will be forwarded to the upstream server at 8.8.8.8.
More than one rule can be defined, just separate them using whitespaces, like so:
simple-dns-proxy test-*.domain.com:A:10.0.0.1 prod-*.domain.com:A:10.0.0.2Also, any valid DNS record type can be used:
simple-dns-proxy my-secret-domain.com:MX:192.168.1.100Security
By default simple-dns-proxy will try to bind to the standard DNS port (UDP 53). Depending on
your configuration this will fail. First, you may need to run it with elevated privileges, in
Windows, or as a superuser, in linux based systems:
sudo simple-dns-proxy ...Second, it may fail if you already have any other piece of software listening at that port. This
can be the case, for instance, for Ubuntu based systems, which use dnsmasq. You can take rid
of this by editing the /etc/NetworkManager/NetworkManager.conf file, commenting out the
dns=dnsmasq line and restarting the network manager service (sudo service network-manager restart).
Note that if you're running simple-dns-proxy as a superuser you may be also interested in using the
-G <group id/group name> and -U <user id/user name> parameters to force it use a different
account after initialization.