Skip to content

Instantly share code, notes, and snippets.

@gumeniukcom
Forked from bradt/setup-dnsmasq-os-x-lion
Created August 18, 2014 10:01
Show Gist options
  • Save gumeniukcom/0dddfbe8815278b7e4a7 to your computer and use it in GitHub Desktop.
Save gumeniukcom/0dddfbe8815278b7e4a7 to your computer and use it in GitHub Desktop.
# Setting up dnsmasq for Local Web Development Testing on any Device
Please note, these instructions are for OS X Lion.
First, you need to get the IP address of your machine on your local network. In OS X, the easiest place to find this is in System Preferences > Network. If you're using DHCP on your local network, you will want to make sure your computer requests the same IP address when it renews it's IP address lease. I recommend configuring the DCHP Reservation settings on your router to accomplish this. Otherwise, you can specify a manual address in your network settings:
1. Go to *System Preferences > Network*
1. Click *Advanced...*
1. Click the *TCP/IP* tab
1. Change the *Configure IPv4* dropdown to *Using DHCP with manual address*
1. Enter your current IP address in the textbox that appears
1. Click *Ok* then *Apply*
For the purpose of these instructions, let's assume your local network IP address is 192.168.x.x.
## Install dnsmasq
1. Go to [Downloads for Apple Developers](https://developer.apple.com/downloads/index.action) and download the most recent release of *Command Line Tools for Xcode* and install it.
1. Go to the [MacPorts install page](http://www.macports.org/install.php), then download and install the *Mac OS X Package (.pkg) Installer* for Lion.
1. In Terminal, run
`sudo port -v selfupdate`
1. Install dnsmasq
`sudo port install dnsmasq`
## Configure dnsmasq
1. Add the following line to /opt/local/etc/dnsmasq.conf. (Don't forget to replace the IP address.)
`address=/.dev/192.168.x.x`
This will point all hostnames ending with .dev at 192.168.x.x. If you'd prefer a hostname extension other than .dev, you can always edit this later and add additional lines.
1. `sudo cp /etc/resolv.conf /opt/local/etc/`
## Start dnsmasq automatically on boot
1. `sudo mkdir -p /System/Library/StartupItems/DNSMASQ`
1. Create `/System/Library/StartupItems/DNSMASQ/DNSMASQ` and fill it with the following:
\#!/bin/sh
. /etc/rc.common
if [ "${DNSMASQ}" = "-YES-" ]; then
ConsoleMessage "Starting DNSMASQ"
/opt/local/sbin/dnsmasq
fi
1. Create `/System/Library/StartupItems/DNSMASQ/Startup\ Parameters.plist` and fill it with the following:
{
Description = "Local DNSMASQ Server";
Provides = ("DNS Masq");
OrderPreference = "None";
Messages =
{
start = "Starting DNSMASQ";
stop = "Stopping DNSMASQ";
};
}
1. Add the following line to /etc/hostconfig
`DNSMASQ=-YES-`
1. Make it executable
`sudo chmod +x /System/Library/StartupItems/DNSMASQ/DNSMASQ`
## Start dnsmasq for the first time
1. Open a separate Terminal window and run
`tail -f /var/log/system.log`
1. `sudo /System/Library/StartupItems/DNSMASQ/DNSMASQ`
You should see dnsmasq starting up in the system.log. Make sure there are no errors.
## Add your IP to your DNS settings
1. Go to *System Preferences > Network*
1. Click *Advanced...*
1. Click the *DNS* tab
1. Add 192.168.x.x (your IP address) to the list and drag it to the top of the list if you can
1. Click *Ok* then *Apply*
You will need to do this on any device you would like to access your .dev hostnames, including VMWare instances and iOS devices.
## Test
1. `dscacheutil -flushcache`
1. `dig google.com`
You should see something like this near the bottom:
`;; SERVER: 192.168.x.x#53(192.168.x.x)`
1. `ping somewhere.dev`
You should see something like this:
`PING somewhere.dev (192.168.x.x): 56 data bytes
64 bytes from 192.168.x.x: icmp_seq=0 ttl=64 time=0.035 ms
64 bytes from 192.168.x.x: icmp_seq=1 ttl=64 time=0.046 ms`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment