On my Galaxy Note 2 phone (Android of course), is it possible to edit the hosts file so that it resolves example.com to a public IP BUT resolves it to a local private IP if connected to WiFi with a specific SSID? That is when connected to home WiFi, it should resolve a domain name to a local server on the LAN, but anyplace else it should resolve it to the public IP.

I'm guessing it'd be hard at the very least, if it's even possible, but do I have any options here (either hosts, or some other way)? I've got shell access, and root access, so I can edit pretty much anything that needs to be.

  • 1
    Are you able to run a DNS server at home with "example.com" coded "specially", and then to feed your phone those DNS servers via DHCP when on your home WIFI ?
    – davidgo
    Nov 26, 2013 at 4:43
  • I can put bind9 on my linux box, but I'm not sure how to set it up to resolve from that and not the ISP's servers via the router
    – user184214
    Nov 26, 2013 at 4:53
  • Run bind as a forwarder /recursive server along with your zone of interest. In the DHCP device (on your router), specify the IP address of your Linux box rather then your ISP's dns server.
    – davidgo
    Nov 26, 2013 at 5:16
  • I'll dig up how to do that, and see if I can get it working, thanks!
    – user184214
    Nov 26, 2013 at 9:38

1 Answer 1


DNS resolver always consults local /etc/hosts file before sending DNS query to configured name server (see details in How does Android OS do DNS name resolution?). So this approach cannot work based on connection.

The possible method is to run a DNS server on that specific network and configure DHCP server (mostly your router) to send local DNS server's IP address in response to DHCP requests. Configure DNS server to always resolve a domain name to a fixed IP. Or you may resolve the domain name to required IP using a VPN app temporarily (it's less hassle than editing hosts file every time). See linked answer for details.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .