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)
- Adicione as seguintes linhas a
/etc/sysconfig/network-scripts/ifcfg-<inf>
: %código% - Reinicializar
"estático" resolv.conf (do jeito antigo)
-
DNS1=8.8.8.8 DNS2=8.8.4.4 DOMAIN=mydomain.com
emPEERDNS=no
- 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)
-
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)
-
-
Comando ran
machine-info
- Reinicie. Após a reinicialização, eu re-ssh novamente na VM.
- Experimente
/dev/null
,hostnamectl set-hostname myNEWhostname.myNEWdomain
, obtenha erros como:nslookup google.com
-
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
- 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
eDNS1
, o que causa a falta deDNS1
entradas emDOMAIN
. - Acrescento o seguinte por meio de
nameserver
:
/etc/resolv.conf
sudoedit /etc/sysconfig/network-scripts/ifcfg-eth0
eDNS1=8.8.8.8
- Eu executo novamente o comando
DNS2=8.8.4.4
- No entanto, ainda não tenho DNS,
DOMAIN=myNEWdomain.com
ehostnamectl set-hostname myNEWhostname.myNEWdomain
ainda falham. - Eu tento reiniciar o NetworkManager como recomendado
nslookup
- Ainda não há DNS, então eu executo o comando
ping
- Após a reinicialização, eu faço o login via ssh novamente e FUNCIONA.
systemctl restart NetworkManager.service
ereboot
são bem sucedidos. - Agora, verifico
ping
e vejo as entradasnslookp
incluídas:
cat /etc/resolv.conf
nameserver
de# Generated by NetworkManager
desearch 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
.