The scenario is I have a machine that can be accessed both locally (when I am in the same network as the machine) and publicly (when I am on any external network). I want my hosts file to look something like this: master.parallel.edu master master.parallel.edu master

So that the system will first try the first IP address, and if that doesn't work, try the next one. Is this possible and advisable?

  • No. That's not how networking works. – waltinator Jan 18 '18 at 17:11

Normally IP adress resolving is done via dedicated name services like dnsmasq, bind etc.

The local hosts file /etc/hosts is generally only used if you have a small internal network - listing all internal hosts and their respectives ip addresses; otherwise it should just contain your server's local name (and localhost).

One solution to your question could be to use your server's name in different subdomains, e.g. master.exernal.example.com and master.internal.example.com; now to address master from the external network you have to make external.example.com your primary search domain in /etc/resolv.conf:

# /etc/resolv.conf at external host
search external.example.com example.com
nameserver ns.example.com

# /etc/resolv.conf at internal host
search internal.example.com example.com
nameserver ns.example.com

(asssuming you have a nameserver at ns.example.com)

In each zone file for .external. and .internal.example.com the hostname points to the respective ip address

# zonefile external network
$ORIGIN external.example.com.
master IN A

# zonefile internal network
$ORIGIN internal.example.com.
master IN A

This way you can use curl http://master/ within each network without bothering with FullQualifiedDomainNames.

Your Answer

By clicking "Post Your Answer", you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.