Вы, вероятно, смешиваете классический /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.
NetworkManager с dnsmasq уже давно поддерживается и используется по умолчанию в Ubuntu и, возможно, других дистрибутивах.
[main]
dns=dnsmasq
NetworkManager с несвязанным режимом имеет альфа-качество в последних версиях NetworkManager и в настоящее время также требует dnssec-trigger , поскольку в основном используется для обеспечения проверки DNSSEC на локальном хосте.
[main]
dns=unbound
И dnsmasq, и несвязанные плагины настраивают /etc/resolv.conf
на сервер имен 127.0.0.1
для вас, и каждый из них настраивает соответствующий локальный DNS-сервер.
Используйте dhclient.conf, чтобы указать серверы имен. Это дает вам точный контроль над порядком записей сервера имен и соответствует «Red Hat Way» по настройке сети.
dhclient.conf не существует по умолчанию, но вы можете его создать:
interface "eth0" {
prepend domain-name-servers 8.8.8.8;
append domain-name-servers 8.8.4.4;
}
Результирующий resolv.conf:
# Generated by NetworkManager
search example.com
nameserver 8.8.8.8
nameserver 10.0.2.3
nameserver 8.8.4.4
Протестировано с помощью Vagrant:
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.provision "shell", inline: <<VAGRANTEOF
cat <<EOF > /etc/dhcp/dhclient-eth0.conf
interface "eth0" {
prepend domain-name-servers 8.8.8.8;
append domain-name-servers 8.8.4.4;
}
EOF
sudo service network restart
VAGRANTEOF
end
Дополнительная литература: