Dnsmasq

Dnsmasq 不應該被用作伺服器的 DNS 伺服器

  • October 6, 2015

我在 /etc/network/interfaces 中硬編碼了盒子的 DNS 名稱伺服器

dns-nameservers 8.8.8.8

(我只需要在測試期間使用另一個 DNS 實時搜尋 DNS。)

然後我在盒子上執行了 dnsmasq 作為 DNS 記憶體,還重寫了一些 DNS 條目以指向 Apache 作為代理。

現在由於某種原因,無論何時執行 dnsmasq,我都無法弄清楚該框是否使用 dnsmasq 作為其 DNS 伺服器,儘管也設置了 DNS 名稱伺服器。如果我將 dnsmasq 設置為偵聽所有介面和 127.0.0.1,則所有查找都通過 dnsmasq 進行,包括應該被代理的那些,因此它只會陷入循環而不是被代理。如果我使用不使用 lo 並註釋掉在 127.0.0.1 上的監聽,我根本就沒有得到 DNS。

except-interface=lo
#listen-address=127.0.0.1

沒有 iptables 規則或任何重定向所有 DNS 流量的東西,只允許訪問我們的 IP 範圍。

一定有什麼我錯過了,但我無法弄清楚。

禁用 dnsmasq 探勘通過設置的 DNS,啟用它通過 127.0.0.1

有任何想法嗎?

Ubuntu 和 Debian 中用於 dnsmasq 的啟動腳本在啟動或結束服務時將名稱伺服器顯式添加到 /etc/resolv.conf。

為了防止這種情況發生,您需要編輯 /etc/default/dnsmasq (不是 /etc/dnsmasq.conf)並添加該行

DNSMASQ_EXCEPT=lo

這將阻止 dnsmasq 自動將自己設置為 resolv.conf 中的名稱伺服器,儘管它仍會更改將 resolv.conf 設置為

nameserver (your nameserver)
nameserver 127.0.0.1

引用自:https://serverfault.com/questions/726864