Centos

名稱伺服器在 systemctl restart network.service 後被刪除

  • February 13, 2018

我正在使用 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。

取自這裡:https ://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/3/html/Reference_Guide/s1-networkscripts-interfaces.html

我想這與它有關,但是在設置為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 伺服器,如unbounddnsmasq/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.confnameserver 127.0.0.1每個外掛都配置各自的本地 DNS 伺服器。

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