Server Names Inside Private Network

domain-name-systemnetworking

Our office has a private network, where any requests on a (pre-determined) public IP are forwarded to a private IP inside said network. On that private IP, we've got a server running several services, including HTTP servers, and SCM systems. We only control our private network, having no control on the public IP configuration.

We bought a domain name, and pointed it to that public IP, so people can access our services from the outside. But, when inside the office, people can't use that DNS name, because the server and any other hosts inside the network share the same public IP!

For desktops, inside the office network, dealing with names is really easy: one entry on the hosts file and we're done. However, for laptops, that keep going in and out, and need to access services inside the office, the naming is really annoying.

I don't know the "standard" process for dealing with these kind of situations. I've considered installing BIND in the office, and make people configure their wireless and wired connections to use that DNS server.

What is the correct approach in this situation?
If using BIND (or any other DNS server) is the answer, how should I configure it so that people inside the office can use it to get our custom names, and get forwarded to the ISP DNS when trying to reach the internet?

  • The server which gets all the requests that are forwarded from the public IP, is a Virtual Machine with 4 cores available and 16 GB of RAM, "hosted" on a VMware ESXi 4.1 server (total 48GB of RAM, 8 cores). The office network counts with 10 permanent hosts, and at least another 5 that might appear from time to time.
  • I need practical examples of configuration. Only the most relevant ones, of course. And, if there are multiple ways of solving the problem, please explain which is better given the context.
  • All the infrastructure relies on Linux systems. Namely, Ubuntu latest versions.

Best Answer

I guess bind is too complicated for your needs, consider using dnsmasq. dnsmasq is pretty simple: it takes internal dns-names from the host-file its running on. Other dns-requests are handed to the upstream dns-server. So install it on your default-dns-server in the company thats it.

Result: There is no need for maintaining host-files on your clients. If they are on the internet they resolve through their normal dns-servers, if they are in the company they resolve through dnsmasq.