為什麼 /etc/resolv.conf 不斷變化?
我正在執行一個基於 debian 的 linux vm,使用 virt-manager 和兩個乙太網介面,一個與 NAT 連接,另一個橋接到 br0,
/etc/network/interfaces
我有以下配置auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp
br0 有一個 dhcp 伺服器,除了交換機,它沒有連接到任何東西
當我重新啟動機器時,
/etc/resolv.conf
有以下條目nameserver 192.168.150.1
這是 NAP 分配的網路地址,當我嘗試
ping google.com
得到錯誤時說,temporary name resolution failure
然後我添加另一個條目,即nameserver 8.8.8.8
並且 vm 工作正常,我可以訪問任何網站,但經過一段時間後它會檢查
/etc/resolv.conf
並且它再次有一個條目,即使我讓機器執行而沒有啟動 anny 服務或執行任何程序有沒有辦法找出覆蓋的內容如果找不到,
/etc/resolv.conf
是否有要添加的 watnameserver 8.8.8.8
(/etc/resolv.conf
不使用 bash 文件)
因為它必須。是的,只要其他一些服務需要更新它,/etc/ resolv.conf就應該不斷變化。
這就是問題所在:哪種服務?我們需要更多資訊。
從你的問題的簡單描述來看,只有兩個介面,一個是
lo
,不需要更改/etc/resolv.conf
,另一個是 eth0,正在使用 dhcp 服務。dhcp 服務必須從上游路由器、交換機或在您的情況下,最有可能從 libvirt 和網橋內部的虛擬 dhcp 伺服器更新其租約。我假設兩個介面的描述是通過查看VM內部的配置,而不是來賓的配置。
那麼,一種選擇可能是告訴 dhcpclient覆蓋由 DHCP 租約提供的伺服器,
/etc/dhcp/dhclient.conf
方法是在您的 VM 內部添加以下行:supersede domain-name-servers 1.1.1.1, 2.2.2.2, 3.3.3.3;
或者通過添加,即添加為第一個 DNS 解析器,使用以下行:
prepend domain-name-servers 8.8.8.8, 8.8.4.4;
冰山
問題比上述“冰山一角”可能表明的要復雜得多。
虛擬網路配置很複雜。您必須確保正確配置網橋,我假設它提供 192.168.150.zz 地址(不是預設的 xx.yy.122.zz)。請閱讀https://wiki.libvirt.org/page/VirtualNetworking
還有許多其他替代程序可以更新
/etc/resolv.conf
文件。從您的描述看來,在這種情況下,它們中的任何一個都不是問題所在。但是你知道,多年來一直有一個很長的競爭來控制,/etc/resolv.conf
即使在今天也很普遍。/etc/resolv.conf
一些可能想要不時控制和更改它的程序是:
resolvconf
. 旨在絕對控制/etc/resolv.conf
並避免任何其他程序更改它的程序。去掉它。Network Manager
(您沒有報告您正在使用)。它有幾個條目來定義要使用的 dns 伺服器。你可以重置它的配置(通過移動它的配置文件),或者禁用它,看看它是否能解決問題。- 該文件
/etc/network/interfaces
可能包含 DNS 配置行,此處似乎並非如此。- 該
systemd
resolved
服務可能正在設置本地伺服器 127.0.0.53,您沒有報告相關。dnsmasq
或類似的 DNS 伺服器可能被配置為控制resolv.conf
. 檢查是否有dnsmasq
程序在執行。- 可能會為每個新租約
dhclient
更新(應該如此) 。dhcp.conf
如上所述。