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