Para definir o nome do host , use hostnamectl
apenas o nome do host, desta forma:
hostnamectl set-hostname nodename
Para definir o arquivo de edição de nome de domínio (DNS)/etc/hosts
e verifique se:
- Há uma linha
<machine's primary, non-loopback IP address> <hostname>.<domainname> <hostname>
lá
- Não existem outras linhas com
<some IP> <hostname>
, e isso inclui linhas com 127.0.0.1
e ::1
endereços (IPv6).
Observe que, a menos que você esteja usando o NIS, (none)
é a saída correta ao executar o domainname
comando.
Para verificar se seu nome de domínio DNS está definido corretamente, use o dnsdomainname
comando e verifique a saída de hostname
vs hostname -f
(FQDN).
NIS vs. domínio DNS
Esse problema me confundiu quando o vi pela primeira vez. Parece que o domainname
comando antecede a popularidade da Internet. Em vez do nome de domínio DNS, ele mostra ou define o nome de domínio NIS (Serviço de Informações da Rede), também conhecido como YP (Páginas Amarelas) (um grupo de computadores que possuem serviços fornecidos por um servidor NIS mestre). Este comando simplesmente exibe o nome retornado pela getdomainname(2)
função de biblioteca padrão. ( nisdomainname
e ypdomainname
são nomes alternativos para este comando.)
Exibir o nome de domínio FQDN ou DNS
Para verificar o nome de domínio DNS (Internet), você deve executar o dnsdomainname
comando ou hostname
com as -d, --domain
opções. (Observe que o dnsdomainname
comando não pode ser usado para definir o nome de domínio DNS - ele é usado apenas para exibi-lo.)
Para exibir o FQDN (nome de domínio totalmente qualificado) do sistema, execute hostname
as -f, --fqdn, --long
opções (da mesma forma, este comando não pode ser usado para definir a parte do nome de domínio).
Os comandos acima usam o resolvedor do sistema (implementado pela gethostbyname(3)
função da biblioteca padrão, conforme especificado pelo POSIX) para determinar o nome de domínio DNS e o FQDN.
Resolução de nomes
Em sistemas operacionais modernos, como o RHEL 7, a hosts
entrada /etc/nsswitch.conf
é usada para resolver nomes de host. Na sua máquina CentOS 7, esta linha está configurada como (padrão para o CentOS 7):
hosts: files dns
Isso significa que, quando as funções do resolvedor pesquisam nomes de host ou endereços IP, primeiro procuram uma entrada no /etc/hosts
arquivo e depois tentam os servidores DNS listados em /etc/resolv.conf
.
Ao executar hostname -f
para obter o FQDN de um host, as funções do resolvedor tentam obter o FQDN para o nome do host do sistema. Se o host não estiver listado no /etc/hosts
arquivo ou pelo servidor DNS relevante, a tentativa falhará e o hostname
reportará Name or service not known
.
Quando hostname -d
é executado para obter o nome do domínio, as mesmas operações são executadas e a parte do nome do domínio é determinada retirando a parte do nome do host e o primeiro ponto do FQDN.
Configure o nome do domínio
1. Atualize o servidor de nomes DNS relevante
No meu caso, eu já havia adicionado uma entrada para minha nova máquina CentOS 7 no servidor DNS da minha LAN local; assim, quando o FQDN não foi encontrado no /etc/hosts
arquivo quando executei hostname
com a opção -d
ou -f
, os serviços DNS locais puderam resolva completamente o FQDN para o meu novo nome de host.
2. Use o /etc/hosts
arquivo
Se o servidor DNS não tiver sido configurado, o nome de domínio totalmente qualificado poderá ser especificado no /etc/hosts
arquivo. A maneira mais comum de fazer isso é especificar o endereço IP principal do sistema seguido por seu FQDN e seu nome abreviado de host. Por exemplo,
172.22.0.9 nodename.domainname nodename
Trecho da hostname
página do manual
Você não pode alterar o FQDN com hostname
ou dnsdomainname
.
O método recomendado para definir o FQDN é tornar o nome do host um alias para o nome completo usando /etc/hosts,
DNS ou NIS. Por exemplo, se o nome do host for "ursula", pode haver uma linha na /etc/hosts
qual se lê:
27.0.1.1 ursula.example.com ursula
Tecnicamente: O FQDN é o nome que getaddrinfo (3) retorna para o nome do host retornado por gethostname (2). O nome do domínio DNS é a parte após o primeiro ponto.
Portanto, depende da configuração do resolvedor (geralmente em
/etc/host.conf
) como você pode alterá-lo. Normalmente, o arquivo hosts é analisado antes do DNS ou NIS, portanto, é mais comum alterar o FQDN
/etc/hosts
.
hostname -f
comando não funciona no meu CentOS vm./etc/hostname
e a saída degrep ^hosts: /etc/nsswitch.conf
? Eu não sei muito sobre Network Manager mas eu também notei que minha/etc/NetworkManager/NetworkManager.conf
contém uma linha em sua[keyfile]
seção:hostname=<nodename>
.hostnamectl set-hostname nodename.domainname
se não definir o nome de domínio DNS (e não é que ele define o nome de domínio NIS quer).No Centos7, usar nmtui para definir o nome do host e fornecer o formato nodename.domainname / FQDN está fornecendo resultados consistentes. nome do host [d / f / s] todos fornecem os resultados esperados corretos. Não é armazenado no /etc/resolv.conf OR / etc / hosts. Mas o FQDN é gravado em / etc / hostname como uma entrada de linha única.
fonte
Para mim, o arquivo / etc / hostname continha o FQDN em vez do nome do host (por exemplo, nome do host em vez do nome do host.exemplo.com). Depois que removi o domínio do nome do host em / etc / hostname, o comando 'hostname -f' funcionou normalmente.
Eu acho que isso foi introduzido quando eu instalei a VM do CentOS 7. Eu deveria ter digitado apenas o nome do host, não o nome de domínio totalmente qualificado.
fonte