серверы имен, стертые после systemctl, перезапускают network.service

chmod от coreutils понимает такие присвоения:

chmod g=u file
7
23.10.2014, 20:08
2 ответа

Вы, вероятно, смешиваете классический /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-сервер.

10
27.01.2020, 20:17

Используйте 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

Дополнительная литература:

  • dhclient.conf manpage
  • / usr /share/doc/dhclient-4.2.5/dhclient.conf.example
0
27.01.2020, 20:17

Теги

Похожие вопросы