nameservers apagados após systemctl restart network.service

6

Estou trabalhando no centos 7 e tendo um comportamento problemático ao configurar a interface de rede do dhcp para a configuração de ip estático.

Editei /etc/resolv.conf e execute systemctl restart network.service
As alterações que fiz foram eliminadas e um arquivo genérico foi criado:

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

AVISO: PEERDNS="yes" no arquivo ifcfg-ens160.
PEERDNS =, onde é um dos seguintes: sim - Modifique /etc/resolv.conf se a diretiva DNS estiver definida. Se estiver usando DHCP, sim é o padrão.
no - Não modifique o /etc/resolv.conf.

Extraído daqui: link

Eu acho que tem algo a ver com isso, mas está funcionando bem ao configurar o dhcp, então espero que, se ele configurar /etc/resolv.conf automaticamente, será bem-sucedido.

Uma solução alternativa é editar /etc/resolv.conf após o serviço ser reiniciado.
Mas eu quero entender o comportamento e como posso evitar que o arquivo seja redefinido para essa mensagem de falha padrão.

    
por csny 23.10.2014 / 19:08

3 respostas

8

Você provavelmente está misturando o clássico /etc/init.d/network (que é traduzido para network.service ) com NetworkManager.service . Enquanto espera-se que estes coexistam parcialmente, é muito melhor escolher apenas um deles e parar e desativar o outro.

De qualquer forma, é melhor não escrever /etc/resolv.conf diretamente, mas sim configurar corretamente os arquivos /etc/sysconfig/network e / ou /etc/sysconfig/network-scripts/ifup-* .

Você deve ativar dhcp ou configurar manualmente os servidores de nomes em /etc/sysconfig .

Exemplo (DHCP):

BOOTPROTO=dhcp

Exemplo (estático):

BOOTPROTO=none
DNS1=192.168.1.1

Se você realmente quiser definir /etc/resolv.conf diretamente e quiser ter certeza de que o NetworkManager não irá sobrescrevê-lo, você pode configurá-lo em /etc/NetworkManager/NetworkManager.conf .

[main]
dns=none

Quanto à sua pergunta adicional sobre o número de servidores de nomes, você nunca deve precisar de mais de um ou dois servidores de nomes em /etc/resolv.conf . Você não deve esperar muito do comportamento do resolvedor libc, ele apenas tenta ordenar os servidores de nomes e você terá longos atrasos se tiver servidores de nomes extintos na lista.

Não sei seus motivos para usar mais de três servidores de nomes. Mas se houver, você definitivamente precisa configurar um servidor DNS de encaminhamento local como unbound ou dnsmasq e apontar /etc/resolv.conf para 127.0.0.1 . Para uma melhor experiência com configuração dinâmica, você deve usar o NetworkManager neste caso.

O NetworkManager com dnsmasq tem sido suportado por muito tempo e é o padrão no Ubuntu e possivelmente em outras distribuições.

[main]
dns=dnsmasq

O NetworkManager com unbound está na qualidade alpha nas versões mais recentes do NetworkManager e atualmente também precisa do dnssec-trigger como o principal caso de uso é fornecer a validação DNSSEC no host local.

[main]
dns=unbound

Tanto os plugins dnsmasq quanto os não-plugados configuram /etc/resolv.conf to nameserver 127.0.0.1 para você e cada um deles configura o respectivo servidor DNS local.

    
por 27.12.2014 / 00:15
0

Use dhclient.conf para especificar os servidores de nomes. Ele oferece um controle refinado sobre a ordem das entradas do servidor de nomes e está alinhado com o "Modo Red Hat" de configurar a rede.

O dhclient.conf não existe por padrão, mas você pode criá-lo:

interface "eth0" {
    prepend domain-name-servers 8.8.8.8;
    append domain-name-servers 8.8.4.4;
}

Resolvendo o resolv.conf:

# Generated by NetworkManager
search example.com
nameserver 8.8.8.8
nameserver 10.0.2.3
nameserver 8.8.4.4

Testado com o 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

Leitura adicional:

  • dhclient.conf manpage
  • /usr/share/doc/dhclient-4.2.5/dhclient.conf.example
por 13.03.2017 / 10:55
0

Eu recomendaria usar a ferramenta GUI do NetworkManager para configurar o resolv.conf com valores permanentes - que permanecerão após a reinicialização da rede:

$ nmtui

Ou:

$ nm-connection-editor

Adicione seus servidores DNS, domínios de pesquisa, etc.

Agora, verifique se esses valores ainda estão definidos após a reinicialização da rede:

$ sudo systemctl restart network
$ cat /etc/resolv.conf
    
por 13.02.2018 / 12:32