Como definir o nome do host totalmente qualificado no CentOS 7.0?

Como definir o nome do host totalmente qualificado no CentOS 7.0?

Como defino o nome de host totalmente qualificado no CentOS 7.0?

Eu vi algumas postagens online, por exemplo, usando:

$ sudo hostnamectl set-hostname nodename.domainname

No entanto, executar domainname não retorna nada:

$ domainname
(none)

Também:

$ hostname
nodename.domainname

No entanto,

$ hostname -f
hostname: Name or service not known
$ hostname -d
hostname: Name or service not known

Alguma saída de depuração:

$ cat /etc/hostname
nodename.domainname

$ grep ^hosts /etc/nsswitch.conf
hosts:      files dns

Responder1

Para definir onome de anfitrião fazeruse hostnamectl, mas apenas com o nome do host, assim:

hostnamectl set-hostname nodename

Para definir o(DNS) nome de domínioedite /etc/hostso arquivo e certifique-se de que:

  1. Tem uma linha <machine's primary, non-loopback IP address> <hostname>.<domainname> <hostname>
  2. NÃO há outras linhas com <some IP> <hostname>, e isso inclui linhas com endereços 127.0.0.1e ::1(IPv6).

Observe que, a menos que você esteja usando NIS, (none)é a saída correta ao executar o domainnamecomando.

Para verificar se o seu nome de domínio DNS está definido corretamente, use dnsdomainnameo comando e verifique a saída de hostnamevs hostname -f(FQDN).

Domínio NIS vs. DNS

Esse problema me confundiu quando o descobri pela primeira vez. Parece que o domainnamecomando é anterior à popularidade da Internet. Em vez do nome de domínio DNS, ele mostra ou define o nome do sistemaNIS (serviço de informações de rede)também conhecido como nome de domínio 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. ( nisdomainnamee ypdomainnamesão nomes alternativos para este comando.)

Exibir o nome de domínio FQDN ou DNS

Para verificar oDNS(Internet) nome de domínio, você deve executar o dnsdomainnamecomando ou hostnamecom as -d, --domainopções. (Observe que o dnsdomainnamecomando não pode ser usado para definir o nome de domínio DNS – ele é usado apenas para exibi-lo.)

Para exibir oFQDN (nome de domínio totalmente qualificado)do sistema, execute hostnamecom as -f, --fqdn, --longopçõ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 RHEL 7, a hostsentrada in /etc/nsswitch.confé usada para resolver nomes de host. Na sua máquina CentOS 7, esta linha está configurada como (padrão para CentOS 7):

hosts:      files dns

Isso significa que quando as funções de resolução procuram nomes de host ou endereços IP, elas primeiro verificam se há uma entrada no/etc/hosts arquivoe em seguida tente oServidor(es) DNSque estão listados em /etc/resolv.conf.

Ao executar hostname -fpara 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/hostsarquivo ou no servidor DNS relevante, a tentativa falhará e hostnamereportará que Name or service not known.

Quando hostname -dé executado para obter o nome de domínio, as mesmas operações são realizadas e a parte do nome de domínio é determinada removendo a parte do nome do host e o primeiro ponto do FQDN.

Configurar o nome de 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, então quando o FQDN não foi encontrado no /etc/hostsarquivo quando executei hostnamea opção -dou -f, os serviços DNS locais foram capazes de resolva totalmente o FQDN para meu novo nome de host.

  2. Use o /etc/hostsarquivo

    Se o servidor DNS não tiver sido configurado, o nome de domínio totalmente qualificado poderá ser especificado no /etc/hostsarquivo. A maneira mais comum de fazer isso é especificar o endereço IP primário do sistema seguido por seu FQDN e seu nome de host abreviado. Por exemplo,

     172.22.0.9  nodename.domainname nodename
    

Trecho dehostnamepágina de manual

Você não pode alterar o FQDN com hostnameou dnsdomainname.

O método recomendado para configurar o FQDN é fazer com que o nome do host seja um alias para o nome totalmente qualificado usando /etc/hosts,DNS ou NIS. Por exemplo, se o nome do host for "ursula", pode-se ter uma linha /etc/hostsque diz:

127.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 de 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, por isso é mais comum alterar o FQDN no formato /etc/hosts.

Responder2

No Centos7, usar nmtui para definir o nome do host e fornecer o formato nodename.domainname/FQDN está fornecendo resultados consistentes. hostname [d/f/s] fornecem resultados esperados corretos. Ele não é armazenado em /etc/resolv.conf OU /etc/hosts. Mas o FQDN é gravado em /etc/hostname como uma entrada de linha única.

Responder3

Para mim, o arquivo /etc/hostname continha o FQDN em vez do nome do host (por exemplo, hostname em vez de hostname.example.com). Depois de remover o domínio do nome do host em /etc/hostname, o comando 'hostname -f' funcionou normalmente.

Acho que isso foi introduzido quando instalei a VM CentOS 7. Eu deveria ter inserido apenas o nome do host, não o nome de domínio totalmente qualificado.

Responder4

Problema semelhante ao OP (RHEL7) e resolvido removendo um espaço à direita do nome de host curto listado no /etc/hostnamearquivo. Seguido pela systemctl restart systemd-hostnamed. Agora mostrando FQDN com hostname -fcomando.

informação relacionada