使用DNS服务器DNSMasq,解析127.0.0.1来简化本地Web项目开发

使用DNS服务器DNSMasq,解析127.0.0.1来简化本地Web项目开发

开发Web项目的时候,程序员通常喜欢通过修改本地的/etc/hosts来把项目的域名指向本机的服务器。比如 next-big-project.dev 指向 127.0.0.1 。随着项目的增加,本机的hosts文件里很快就会加入很多的项目记录。有意思的是还有人专门注册了顶级域名并把它们指向了 127.0.0.1 。比如localhost.com!真是活雷锋啊,专门利人。

当然更好的办法是能有个属于自己的DNS服务器,那就更方便了。DNSMasq正是满足了开发人员的这个需求。大致了流程如下:

  1. 安装DNSMasq,并配置要解析的顶级域
  2. 配置Mac OS的DNS解析,对指定的域名使用上一步安装的本地DNSMasq服务进行解析

安装DNSMasq

通过brew来安装DNSMasq服务当然是最方便的:

# Update your homebrew installation
brew up
# Install dnsmasq
brew install dnsmasq

配置一个你想要进行本地解析的顶级域名TLD,这里以dev为例。
我要修改的文件是/usr/local/etc/dnsmasq.conf , 如果你是用valet可能这个配置文件位于~/.config/valet/dnsmasq.conf。文件内容如下:

address=/.dev/127.0.0.1
listen-address=127.0.0.1

如果有多个顶级域名TLD要加入,可以添加多条address=…记录。

修改好dnsmasq.conf文件后,重启一下brew管理的dnsmasq服务。命令是sudo brew services restart dnsmasq

配置Mac OS使用DNSMasq进行DNS解析

在目录/etc/resolver下,重建一个与顶级域名相同的文件。本例子里就是 /etc/resolver/dev

打开这个文件输入这个域名的解析DNS服务器。内容如下:

nameserver 127.0.0.1

这是运行scutil --dns命令,应该已经能看到对应的域的解析服务器是127.0.0.1了。

OK, 现在进行验证一下结果

首先我们清除一下Mac的DNS缓存:sudo killall -HUP mDNSResponder

然后使用dig命令,看看DNSMasq对这个域名的解析记录。比如: dig next-big-project.dev @127.0.0.1

最后还可以用ping来看一下,网络请求是不是已经从本地返回了。ping next-big-project.dev

不知道有没有更方便的类似工具能做同样的事情,欢迎推荐。

参考文章

leon

每天进步一点点
Close Menu