Dnsmasq 在不應該的情況下被用作伺服器的 DNS 伺服器

Dnsmasq 在不應該的情況下被用作伺服器的 DNS 伺服器

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

dns-nameservers 8.8.8.8

(我只需要在測試期間使用另一個 DNS 即時谷歌 DNS。)

然後我在機器上運行 dnsmasq 作為 DNS 緩存,同時重寫一些 DNS 項目以指向 Apache 作為代理。

現在,由於某種原因,我無法弄清楚每當 dnsmasq 運行時,盒子是否正在使用 dnsmasq 作為它的 DNS 伺服器,儘管 DNS 名稱伺服器也設定了。如果我將 dnsmasq 設定為偵聽所有介面和 127.0.0.1,則所有查找只會透過 dnsmasq,包括那些應該被代理程式的查找,因此它只會陷入迴圈而不是被代理。如果我使用 don't use lo 並註解掉對 127.0.0.1 的監聽,我根本得不到 DNS。

except-interface=lo
#listen-address=127.0.0.1

沒有 iptables 規則或任何重新導向所有 DNS 流量的規則,只允許存取我們的 IP 範圍。

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

停用 dnsmasq 後,挖掘將通過設定的 DNS,啟用後,它將通過 127.0.0.1

有任何想法嗎?

答案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

相關內容