simple-dns-proxy

A simple DNS proxy with UI that allows to override name resolution of hosts based on regular expressions.


Keywords
dns, proxy, ui, regex
License
MIT
Install
npm install simple-dns-proxy@0.0.3

Documentation

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.1

Installation

npm install -g simple-dns-proxy

Usage

simple-dns-proxy *.mydomain.com:A:127.0.0.1 -u 8.8.8.8

The 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.2

Also, any valid DNS record type can be used:

simple-dns-proxy my-secret-domain.com:MX:192.168.1.100

Security

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.