Is it possible to override a single domain name using dnsmasq

dnsmasqdomain-name-systemroutingspoofing

I have a server application that I'm running two instances of, production and development, namely:

prod.example.com (10.0.0.1)
dev.example.com (10.0.0.2)

A third-party has written a client application which has been hardcoded to point to prod.example.com. But, I want those requests to go to the dev.example.com server and I don't have access to the third-party source code.

I do have access (temporarily) to the LAN that the client and server are running on so I can use dnsmasq to resolve prod.example.com to 10.0.0.2, at which point my work here is done and the client application will be (unknowingly) talking to the development server (or so I thought).

I've gotten as far as adding the following config to dnsmasq.conf..

address=/prod.example.com/10.0.0.2

..which does work, but it has the side-effect of preventing all other domains from resolving.

How can I have my cake and eat it?

Best Answer

Add this line to /etc/dnsmasq.conf:

addn-hosts=/etc/dnsmasq.hosts

Then insert your domain names into /etc/dnsmasq.hosts:

10.0.0.1  prod.example.com.
10.0.0.2  dev.example.com.

Don't forget the period at the end of the domain name. It marks it as a TLD, not a local hostname.

As always after configuration changes, restart dnsmasq:

sudo service dnsmasq restart