名稱伺服器在 systemctl restart network.service 後被刪除
我正在使用 centos 7,並且在將網路介面從 dhcp 設置為靜態 ip 配置時出現問題。
我編輯
/etc/resolv.conf
並執行systemctl restart network.service
我所做的更改消失了,並創建了一個通用文件:
cat /etc/resolv.conf # Generated by NetworkManager # No nameservers found; try putting DNS servers into your # ifcfg files in /etc/sysconfig/network-scripts like so: # # DNS1=xxx.xxx.xxx.xxx # DNS2=xxx.xxx.xxx.xxx # DOMAIN=lab.foo.com bar.foo.com
注意:ifcfg-ens160 文件中的 PEERDNS=“yes”。
PEERDNS=,其中是以下之一: yes — 如果設置了 DNS 指令,則修改 /etc/resolv.conf。如果使用 DHCP,則預設值為 yes。
no — 不要修改 /etc/resolv.conf。
我想這與它有關,但是在設置為dhcp時它執行良好,所以我希望如果它
/etc/resolv.conf
自動配置它會成功。一種解決方法是
/etc/resolv.conf
在服務重新啟動後進行編輯。但我想了解這種行為,以及如何避免將文件重置為此預設失敗消息。
您可能正在將經典
/etc/init.d/network
(已翻譯為network.service
)與NetworkManager.service
. 雖然預計它們會部分共存,但最好只選擇其中一個並停止並禁用另一個。無論哪種方式,最好不要
/etc/resolv.conf
直接編寫,而是正確配置/etc/sysconfig/network
和/或/etc/sysconfig/network-scripts/ifup-*
文件。您應該啟用dhcp或在
/etc/sysconfig
.範例(DHCP):
BOOTPROTO=dhcp
範例(靜態):
BOOTPROTO=none DNS1=192.168.1.1
如果你真的想
/etc/resolv.conf
直接設置,又想確保 NetworkManager 不會覆蓋它,可以在/etc/NetworkManager/NetworkManager.conf
.[main] dns=none
關於您關於名稱伺服器數量的附加問題,您在
/etc/resolv.conf
. 您不應該對 libc 解析器的行為抱有太多期望,它只是按順序嘗試名稱伺服器,如果列表中有已失效的名稱伺服器,您將遇到長時間的延遲。我不知道您使用三個以上名稱伺服器的原因。但是如果有的話,你肯定需要配置一個本地轉發 DNS 伺服器,如unbound或dnsmasq並
/etc/resolv.conf
指向127.0.0.1
. 為了獲得動態配置的最佳體驗,您應該在這種情況下使用 NetworkManager。帶有 dnsmasq 的 NetworkManager 長期以來一直受到支持,並且是 Ubuntu 和可能的其他發行版的預設設置。
[main] dns=dnsmasq
未綁定的 NetworkManager 在最新的 NetworkManager 版本中處於 alpha 質量,目前還需要dnssec-trigger,因為主要案例是在本地主機上提供 DNSSEC 驗證。
[main] dns=unbound
dnsmasq 和 unbound 外掛都為您配置
/etc/resolv.conf
,nameserver 127.0.0.1
每個外掛都配置各自的本地 DNS 伺服器。