以前設置dnsmasq,一直沒有奏效,後來摸索了一下,初步發現它的原理:服務器
正常的流程應該是像這樣的,先由client來發送DNS請求到網關,而後網關的dnsmasq處理這個請求,網站
再根據設置決定如何處理這個請求。3d
可是,在下面這種狀況下,dnsmasq就沒有做用了:blog
當你在接口-LAN裏面設置了序號爲6的option,也就是dns服務器地址設置,好比 6,8.8.8.8,那麼客戶端被通告dns
的DNS服務器就是8.8.8.8,客戶端的全部請求都會發送到8.8.8.8,而不是發送到網關。接口
就像這個樣子:路由
若這裏不填寫的話,客戶端的請求會先發送到網關,而後由網關決定。這裏的網關指的是路由器。io
也就是像下面這個樣子:原理
當client的dns服務器地址是網關時,網關必須作出相應的處理,否則客戶端的dns請求得不到迴應,cli
也就會致使沒法訪問網站。
當只設置一個dns的時候,這樣和指派給客戶端dns地址的效果是同樣的。
dnsmasq的強大之處之一是能夠選擇多個dns來解析,好比這裏將baidu和163交給114dns解析,其餘交給8.8.8.8來解析。