CentOS7 hostnamectl set-hostname bagunça com /etc/resolv.conf

0

CentOS7. Rede está tudo bem.

# cat /etc/resolv.conf 
nameserver 192.168.1.1

Então decido mudar o nome do host.

# hostnamectl set-hostname host.domain
# reboot
# cat /etc/resolv.conf 
# Generated by NetworkManager
search domain


# 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

Por que o hostnamectl set-hostname atrapalha meu /etc/resolv.conf ?

    
por Pavel Tankov 29.09.2016 / 17:10

2 respostas

0

Apenas para reiterar, como resposta oficial, o que o MikeA diz nos comentários da pergunta:

It's not necessarily dhcpclient, but may be NetworkManager. If you specify DNS1, DNS2, and DOMAIN in the same file, it should create the correct /etc/resolv/conf for you.

If you don't have DNS1, DNS2, and DOMAIN in this file, you need to manually add the correct lines to your /etc/resolv.conf (i.e. search and nameserver) - MikeA

Eu segui seus comentários e obtive sucesso (veja abaixo mais detalhes).

NetworkManager (CentOS 7 - modo atual)

  1. Adicione as seguintes linhas a /etc/sysconfig/network-scripts/ifcfg-<inf> : %código%
  2. Reinicializar


"estático" resolv.conf (do jeito antigo)

  1. DNS1=8.8.8.8 DNS2=8.8.4.4 DOMAIN=mydomain.com em PEERDNS=no
  2. Adicione linhas corretas manualmente a /etc/sysconfig/network-scripts/ifcfg-<inf> (por exemplo, pesquisa, nameserver) (Isto é essencialmente como



Mais informações & Detalhes

Eu cheguei a essa pergunta como resultado de um erro de rede.

O servidor é uma máquina virtual do CentOS 7 em execução no ambiente KVM.

O sistema operacional foi instalado por meio do modelo do painel de controle do SolusVM.

Depois de instalar o CentOS 7, fiz uma das duas maneiras de alterar o nome do host, mas não me lembro qual:

  • %código%; ou
  • guia Hostname do painel de controle do SolusVM usado

Estou bastante certo de que fiz apenas o último, pois tenho um commit do init GIT que mostra /etc/resolv.conf e hostname myserver.mydomain.com usando o hostname antigo, mas hostname tem uma única entrada com IP estático e novo hostname /domínio. Veja abaixo os diffs.

Parece que essa alteração não persistiu por um motivo ou outro, quando a VM foi suspensa via SolusVM (ou gerenciador de KVM), resultando na reinicialização, o nome do host foi revertido de volta ao original por resolv.conf .

Descobri então que, no CentOS 7, o nome do host deve ser definido usando hosts . [1]

Depois de fazer isso e reiniciar, descobri que não tinha uma resolução de DNS, por exemplo, systemd e hostnamectl set-hostname myserver.mydomain.com resultaram em erros de resolução de DNS / não.

Parece que qualquer configuração de DNS que tenha sido definida através do modelo de instalação do SolusVM CentOS 7 foi eliminada pelo NetworkManager, embora eu não possa dizer com certeza quem / o que causou as mudanças, mas está claro no GIT que foram feitas alterações em nslookup google.com , ping google.com e /etc/hostname logo após executar o comando /etc/resolv.conf (novamente, veja abaixo para diffs).

Aqui estão as etapas exatas que fiz para qualquer pessoa em uma situação semelhante, para solução de problemas ou como um exemplo explícito:

Objetivo: atualizar hostname.domainname (fqdn)

(explicitamente: myOLDhostname.myOLDdomain.com - > myNEWhostname.myNEWdomain.com)

  1. Estado inicial:

    • /etc/machine-info : hostnamectl ...
    • hostname :% myOLDhostname.myOLDdomain.com
    • resolv.conf : # Generated by NetworkManager search myOLDdomain.com nameserver 8.8.8.8 nameserver 8.8.4.4 (ou seja, não existente)
  2. Comando ran machine-info

  3. Reinicie. Após a reinicialização, eu re-ssh novamente na VM.
  4. Experimente /dev/null , hostnamectl set-hostname myNEWhostname.myNEWdomain , obtenha erros como: nslookup google.com
  5. ping google.com mostra agora: ping: unknown host google.com
    cat /etc/resolv.conf


    # Generated by NetworkManager
    search myNEWdomain.com e # No nameservers found; try putting DNS servers into your e # ifcfg files in /etc/sysconfig/network-scripts like so:
    # DNS1=xxx.xxx.xxx.xxx
  6. Após a pesquisa, descubro que # DNS2=xxx.xxx.xxx.xxx não tem as entradas # DOMAIN=lab.foo.com bar.foo.com , /etc/sysconfig/network-scripts/ifcfg-eth0 e DNS1 , o que causa a falta de DNS1 entradas em DOMAIN .
  7. Acrescento o seguinte por meio de nameserver :
    /etc/resolv.conf
    sudoedit /etc/sysconfig/network-scripts/ifcfg-eth0 e DNS1=8.8.8.8
  8. Eu executo novamente o comando DNS2=8.8.4.4
  9. No entanto, ainda não tenho DNS, DOMAIN=myNEWdomain.com e hostnamectl set-hostname myNEWhostname.myNEWdomain ainda falham.
  10. Eu tento reiniciar o NetworkManager como recomendado nslookup
  11. Ainda não há DNS, então eu executo o comando ping
  12. Após a reinicialização, eu faço o login via ssh novamente e FUNCIONA. systemctl restart NetworkManager.service e reboot são bem sucedidos.
  13. Agora, verifico ping e vejo as entradas nslookp incluídas:
    cat /etc/resolv.conf
    nameserver de # Generated by NetworkManager de search myNEWdomain.com

Para o GIT, eu uso nameserver 8.8.4.4 (essencialmente gerencia um repositório GIT em nameserver 8.8.8.8 ) e mostra a configuração inicial, e explicitamente, não houve outras alterações nos arquivos relacionados à rede de etckeeper até a execução o comando /etc .

    
por 28.04.2017 / 08:42
0

Você pode dizer ao Networkmanager para não alterar resolv.conf adicionando um nodns recortado na seção principal em /etc/NetworkManager/conf.d/nodns.conf : [main] dns=none

(não se esqueça de systemctl restart NetworkManager )

    
por 13.03.2018 / 14:41