Automatic local domains: Setting up dnsmasq for macOS High Sierra to Big Sur using Homebrew

Photo by imgix on Unsplash

Have you ever wished you could add domains on your local machine (127.0.0.1) on the fly and not have to modify your /etc/hosts file?

These are the steps will allow you to create foo.localhost, bar.localhost, myproject.localhost …. just anything.localhost

Why .localhost? Back in 1999 localhost top level domain (tld) was reserved by the Internet Engineering Task Force (IETF), see RFC 2606. They also reserved test tld (.test) if you are interested in separating test from development.

How do we accomplish this?

Step 1

Install Homebrew

$ /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Step 2

Install dnsmasq

brew install dnsmasq

Step 3

Create config folder if it doesn’t already exist

mkdir -pv $(brew —- prefix)/etc/

Step 4

Configure dnsmasq for *.localhost

echo ‘address=/.localhost/127.0.0.1’ >> $(brew — prefix)/etc/dnsmasq.conf

Step 5

Configure the port for macOS High Sierra

echo ‘port=53’ >> $(brew —- prefix)/etc/dnsmasq.conf

Step 6

Start dnsmasq as a service so it automatically starts at login

sudo brew services start dnsmasq

Step 7

Create a dns resolver

sudo mkdir -v /etc/resolversudo bash -c ‘echo “nameserver 127.0.0.1” > /etc/resolver/localhost’

Step 8

Verify that all .localhost requests are using 127.0.0.1

scutil --dns

You should see something like this

resolver #8domain   : localhostnameserver[0] : 127.0.0.1flags    : Request A records, Request AAAA recordsreach    : 0x00030002 (Reachable,Local Address,Directly Reachable Address)

You can also test by using ping

ping foo.localhost
ping anything.localhost

Conclusion

Now you can reference *.localhost and it will point to your local development machine. Now Profit!

Medium formatting is off, please see my blog to easily copy and paste.

Don’t forget to clap and share so others can find it.

--

--

--

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

VS Code extensions that makes Web Developer’s life easier | Aishwarya MU

You should totally use TTY-prompt!

What is MongoDB?

Memory leaks and how to find them.

CloudBoost vs Firebase: A War of choices.

MY APP NAME IS: GW ANIMALS

Eclipse CDT with C Compiler Setup in Windows 10

Demystifying Corda Serialisation Format

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Khary Sharpe

Khary Sharpe

More from Medium

ESP-IDF core dump: on the UART, store to Flash and send to a Server

Screen photo by author of ‘ESP-IDF’ core dump start and end line for ‘ESP32’

How to secure Docker containers on a Raspberry Pi in 6 steps.

How to fix ERR_SSL_VERSION_OR_CIPHER_MISMATCH error?