Resolv.conf

為什麼 /etc/resolv.conf 不斷變化?

  • July 15, 2022

我正在執行一個基於 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 是否有要添加的 wat nameserver 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一些可能想要不時控制和更改它的程序是:

  1. resolvconf. 旨在絕對控制/etc/resolv.conf並避免任何其他程序更改它的程序。去掉它。
  2. Network Manager(您沒有報告您正在使用)。它有幾個條目來定義要使用的 dns 伺服器。你可以重置它的配置(通過移動它的配置文件),或者禁用它,看看它是否能解決問題。
  3. 該文件/etc/network/interfaces 可能包含 DNS 配置行,此處似乎並非如此。
  4. systemd resolved服務可能正在設置本地伺服器 127.0.0.53,您沒有報告相關
  5. dnsmasq或類似的 DNS 伺服器可能被配置為控制resolv.conf. 檢查是否有dnsmasq程序在執行。
  6. 可能會為每個新租約dhclient更新(應該如此) 。dhcp.conf如上所述。

引用自:https://unix.stackexchange.com/questions/710011