@Lenciel

使用dnsmasq配置本地开发环境

做 Web 开发的时候经常需要修改/etc/hosts文件把dev.cool.project或者cool.project.dev这样的域名指向 127.0.0.1(如果你从来没有这么做过那你可以跳过后面的内容了但, seriously? you are a web dev and never did this before?)。这样做有些麻烦:

  • 每个项目需要修改 hosts 文件
  • 需要 root 权限才能修改这个文件

这里记一下如何用dnsmasq把所有dev结尾的域名都指向127.0.0.1

安装dnsmasq

在 Mac 下安装什么东西本座都用homebrew,先更新 brew:

    $ brew up

然后安装 dnsmasq。注意安装命令的输出,结尾是有配置的简单说明的。因为我用了boxen所以路径不一定对每个人都适用,以你自己的输出为准:

    $ brew install dnsmasq
==> make install PREFIX=/opt/boxen/homebrew/Cellar/dnsmasq/2.69
==> Caveats
To configure dnsmasq, copy the example configuration to /opt/boxen/homebrew/etc/dnsmasq.conf
and edit to taste.
  cp /opt/boxen/homebrew/opt/dnsmasq/dnsmasq.conf.example /opt/boxen/homebrew/etc/dnsmasq.conf
To have launchd start dnsmasq at startup:
    sudo cp -fv /opt/boxen/homebrew/opt/dnsmasq/*.plist /Library/LaunchDaemons
Then to load dnsmasq now:
    sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
==> Summary
/opt/boxen/homebrew/Cellar/dnsmasq/2.69: 7 files, 488K, built in 22 seconds

配置dnsmasq

dnsmasq.conf里面添加一个配置dev的配置:

address=/dev/127.0.0.1

重启 dnsmasq 服务:

$ sudo launchctl stop homebrew.mxcl.dnsmasq
$ sudo launchctl start homebrew.mxcl.dnsmasq

配置OSX

安装了 dnsmasq 之后你有两个选择:

  1. 把操作系统所有的 DNS 查询都由 dnsmasq 处理
  2. .dev的 DNS 查询交给 dnsmasq 处理

第一个比较简单,在System Preferences里面配置一下就可以了。 第二个需要用/etc/reslov.conf 文件来更精细的控制 DNS 查询:

$ sudo mkdir -p /etc/resolver
$ sudo touch /etc/resolver/dev
$ sudo vi /etc/resolver/dev

/etc/resolver/dev里面添加一行nameserver 127.0.0.1就可以了。

测试效果


    $ ping -c 1 www.sina.com.cn
    PING newscd.sina.com.cn (221.236.31.145): 56 data bytes

    $ ping -c 1 this.is.a.test.dev
    PING this.is.a.test.dev (127.0.0.1): 56 data bytes

    $ ping -c 1 this.is.cool.dev
    PING this.is.cool.dev (127.0.0.1): 56 data bytes

嗯哼~

欢迎留言