iPhone: add entry to /etc/hosts without jailbreaking
Set up a real DNS entry, either by setting up a local DNS server on your wireless network, or by using a dynamic DNS service, or by adding an A record to a domain you control DNS for.
EDIT: If you're willing to purchase a small license, I recommend using Charles Proxy, a web debugging proxy tool. It will also resolve domains from your local /etc/hosts, and it gives a lot of bonus features (i.e. inspect requests/responses and throttle network speeds). I only stumbled upon this tool from a WWDC video and I'm not affiliated with the product at all. I recommend reading Chris Ching's tutorial for iPhone and Charles Proxy to get you started.
To add to Ramon's answer, a way around it is to setup your local computer as a DNS server and have your iPhone point to your computer as a DNS server. This would also work for Android devices as well
The instructions are for Mac OSX via Homebrew:
brew install dnsmasq
dnsmasq
is a lightweight dns server that will fallback to the original DNS server when it encounters an unknown domain
- Add the line
address=/.your.domain.com/10.0.0.5
to the file /usr/local/etc/dnsmasq.conf- The IP Address
10.0.0.5
is whatever the IP address assigned to your local computer by your router. You can find this viaNetwork Utility
(if you want to be fancy, you can assign a static IP to your local computer in your router)
- The IP Address
sudo dnsmasq
- This starts dnsmasq process, and it will listen on the DNS ports
- Assign your local computer and your router as your DNS servers for your computer via System Preferences -> Network -> Advanced -> DNS Tab
- You'll have two entries, one for your local computer (127.0.0.1) and one for your router. The reason why you include your router's IP is
dnsmasq
will fulfill unknown entries through the other known DNS servers. Without the router entry, you're whatever devices connected to youdnsmasq
won't know how to connect to the internet.
- You'll have two entries, one for your local computer (127.0.0.1) and one for your router. The reason why you include your router's IP is
- Set your local computer's IP Address as your DNS Server your iPhone, go to Settings -> Wi-Fi -> Info icon for your connected router -> DNS
Some things to consider:
- If you shut down your machine, your iPhone won't connect to the internet anymore. Make sure to reset your iPhone's DNS server to your router's IP
- By default
dnsmasq
will look at your /etc/hosts, so if you had pointedyour.domain.com
to127.0.0.1
, your iPhone will resolveyour.domain.com
to127.0.0.1
, which means you won't connect to anything. To change this behaviour edit uncomment the#no-hosts
line in the dnsmasq config.
Sources
- http://www.davesouth.org/stories/how-to-set-up-dnsmasq-on-snow-leopard-for-local-wildcard-domains