DNSmasq 是一个小巧且方便地用于配置DNS和DHCP的工具。咱们在作开发时,常常会把一些域名映射到本地,但咱们知道 /etc/hosts
不支持各类稍微高级一些的配置,好比泛域名解析,你想把 *.hello.me
映射到本地,必须在 hosts 文件里一个一个地写,这个就很坑了。html
因此就有了 DNSmasq !缓存
Mac 下直接使用 brew 安装便可:服务器
brew install dnsmasq
安装成功后提示:网络
cp /usr/local/opt/dnsmasq/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf sudo brew services start dnsmasq
/usr/local/etc/dnsmasq.conf
根据上述成功安装提示照作,生成 /usr/local/etc/dnsmasq.conf
文件,编辑内容以下:工具
# 配置上行DNS,对应no-resolv resolv-file=/etc/resolv.conf # resolv.conf内的DNS寻址严格按照从上到下顺序执行,直到成功为止 strict-order # DNS解析hosts时对应的hosts文件,对应no-hosts addn-hosts=/etc/hosts cache-size=1024 # 多个IP用逗号分隔,192.168.x.x表示本机的ip地址,只有127.0.0.1的时候表示只有本机能够访问。 # 经过这个设置就能够实现同一局域网内的设备,经过把网络DNS设置为本机IP从而实现局域网范围内的DNS泛解析(注:无效IP有可能导至服务没法启动) listen-address=192.168.x.x,127.0.0.1 # 重要!!这一行就是你想要泛解析的域名配置. address=/hello.me/127.0.0.1
以上几乎是最简配置.rest
reolve-file=/etc/resolv.conf
配置上行DNS,假设 /etc/resolv.conf
内容以下:code
nameserver 183.44.22.19
那就是说若是你访问域名abc.com没有被dnsmasq解析,它会尝试访问 183.44.22.19
去解析。server
你的 Mac 可能同时就是你的 DNS 使用者,全部,须要:系统偏好配置->网络->(你的链接)->DNS增长了一个条目:htm
# 局域网其它机器则换成实际dnsmasq的IP地址。 127.0.0.1
通常这一行放到最上面,会优先DNS解析dns
此时,你 ping 一下 hello.me
、dev.hello.me
,就会发现全指向了本地。
注意须要使用 sudo 来启动,由于权限要求较高。
# 启动 sudo brew services start dnsmasq # 重启 sudo brew services restart dnsmasq # 中止 sudo brew services stop dnsmasq
若是改动了泛解析规则,重启 dnsmasq 不会当即看到效果,由于有缓存,能够稍等即可或清除一下缓存再试
sudo killall -HUP mDNSResponder