Percebi que o método "preferido" de definir o nome do host do sistema é fundamentalmente diferente entre os sistemas Red Hat/CentOS e Debian/Ubuntu.
A documentação do CentOS e o guia de implantação do RHEL dizem que o nome do host deve ser o FQDN :
HOSTNAME=<value>
, onde<value>
deve ser o nome de domínio totalmente qualificado (FQDN), comohostname.example.com
, mas pode ser qualquer nome de host necessário.
O guia de instalação do RHEL é um pouco mais ambíguo:
A instalação solicita que você forneça um nome de host para este computador, como um nome de domínio totalmente qualificado (FQDN) no formato hostname.domainname ou como um nome de host curto no formato hostname .
A referência Debian diz que o nome do host não deve usar o FQDN :
3.5.5. O nome do host
O kernel mantém o nome do host do sistema . O script init no nível de execução S que está com link simbólico para " /etc/init.d/hostname.sh " define o nome do host do sistema no momento da inicialização (usando o comando hostname ) para o nome armazenado em " /etc/hostname ". Esse arquivo deve conter apenas o nome do host do sistema, não um nome de domínio totalmente qualificado.
Não vi nenhuma recomendação específica da IBM sobre qual usar, mas alguns softwares parecem ter uma preferência.
Minhas perguntas:
- Em um ambiente heterogêneo, é melhor usar a recomendação do fornecedor ou escolher uma e ser consistente em todos os hosts?
- Qual software você encontrou que é sensível ao fato de o nome do host estar definido como FQDN ou nome abreviado?
Eu escolheria uma abordagem consistente em todo o ambiente. Ambas as soluções funcionam bem e permanecerão compatíveis com a maioria dos aplicativos. Há uma diferença na capacidade de gerenciamento, no entanto.
Eu vou com o nome abreviado como a configuração HOSTNAME e defino o FQDN como a primeira coluna
/etc/hosts
do IP do servidor, seguido pelo nome abreviado.Não encontrei muitos pacotes de software que imponham ou exibam uma preferência entre os dois. Acho que o nome curto é mais limpo para alguns aplicativos, especificamente o registro. Talvez eu tenha tido azar em ver domínios internos como
server.northside.chicago.rizzomanufacturing.com
. Quem quer ver isso nos logs ou em um prompt de shell ?Às vezes, estou envolvido em aquisições ou reestruturações de empresas onde os domínios internos e/ou subdomínios mudam. Eu gosto de usar o nome de host curto nesses casos porque log, kickstarts, impressão, monitoramento de sistemas, etc. não precisam de reconfiguração completa para contabilizar os novos nomes de domínio.
Uma configuração típica de servidor RHEL/CentOS para um servidor chamado "rizzo" com domínio interno "ifp.com" seria semelhante a:
-
-
-
Praticamente todos os softwares são sensíveis à configuração correta do nome do host. Enquanto eu estava trabalhando no Digg, uma vez eu desativei o site inteiro por 2 horas devido a uma mudança aparentemente inocente
/etc/hosts
que afetou a noção de nome de host do sistema. Pise levemente. Dito isto, você pode estar um pouco confuso aqui. Eu não acho que aHOSTNAME=
configuração seja diretamente equivalente a como as distribuições baseadas em Debian usam/etc/hostname
.O que funciona para mim em um ambiente heterogêneo é:
hostname
comando para definir o nome do host usado pelo kernel, etc.Em
/etc/hosts
:Esta configuração ainda não me falhou.
Você certamente não terá problemas para encontrar referências on-line que lhe dirão para fazer isso de uma maneira ou de outra. Parece-me, no entanto, que ter um nome curto como o nome do host e ter o nome totalmente qualificado em /etc/hosts certamente é muito mais prevalente. Parece ser a maneira mais sensata, pois os serviços que precisam de um nome totalmente qualificado podem ser adaptados para chamar
hostname --fqdn
.Eu só encontrei um software recentemente que exige rigidamente que um fqdn seja retornado por
hostname
, que foi ganetti. Eles documentam isso aqui . Não vejo nenhuma razão para que eles não possam se adaptarhostname --fqdn
, no entanto.Um pouco tangencialmente, enquanto pesquisava essa questão, fiquei louco o suficiente para verificar o código-fonte de "hostname" e escrever um script para imprimir os resultados da investigação (Fedora 19). O que está faltando é uma olhada em "/etc/hosts", que na minha humilde opinião deve ser mantido fora de tudo isso em primeiro lugar.
A saída em uma VM do Amazon EC2 executando o Fedora 19 , após definir manualmente os valores do kernel e preenchimento
/etc/hostname
, mas sem alterações/etc/hosts
pode ser assim:A maneira resiliente de obter o nome do host totalmente qualificado em perl seria:
e no bash seria:
Notas
Nota 1: HOSTNAME é uma variável de shell que o bash fornece ("Definido automaticamente com o nome do host atual"), mas não há indicação de que o bash chega a esse valor.
Nota 2: Nunca esqueça /etc/hostname em /boot/initrams-FOO.img...
Short answer: I generally use the FQDN as the hostname (as recommended on RH6/7 docs). However, the more righteous approach would be to use a single-label name as the hostname, setting the FQDN via
/etc/hosts
. So, pick an approach and stick with it whenever possible.Long answer: The main advantage of using the FQDN as the hostname is that the machine name intrinsically embeds domain information. This is very useful when receiving email alert and/or logs for multiple customers/domains, as it avoid duplicate hostnames (ie: hostnames are more-or-less guaranteed to be unique across multiple sites/customers/domains). For example, SNMP
sysName
show the hostname by default and, by using the FQDN, it simply conveys a more useful information. The same is true forzabbix-agent
(and other monitor tools) or for bash$HOSTNAME
. While you can configure such tools for using FQDNs even on machine with single-label hostname, or configure them in an hierarchical model which clearly shows the domain containing the machine, this is additional work.Some application even require using a FQDN as the hostname, but they are quite the exception. Still, when the exception hits, the homogeneous use of single-label hostname is lost. This probably is the main reason behind RedHat's recommendation to use a FQDN as the hostname on RH6/7. More recent docs are more vague. On "Performing a standard RHEL 8 installation" one can read:
while "Performing an advanced RHEL 8 installation" states:
In the years between the original question, user applications have learned to treat FQDN hostnames without the issue described in the previous answers. For example, bash
PS1
prompt uses\h
(the hostname up to the first '.') by default, andrsyslog
does not preserve FQDN in logfiles by default. In other words, the usability drawback of a FQDN hostname are no more for many common tools. For these reasons, I generally set the system hostname as a FQDN, leaving the shortname on/etc/hosts
as required.The reason to not use a FQDN hostname is that, frankly, this is The Right Thing To Do. As respectively stated in the debian docs and hostname man page:
and
So, while I do feel uneasy to use a FQDN hostname, it is easier using it in my environments.
Please note this is not an appeal against single-label hostname. If they work for you, continue using it. Otherwise, give the FQDN hostname a try.
As opções /etc/hosts funcionam bem.
Mas você quer ter certeza de que todos os arquivos apropriados estão atualizados, execute a ferramenta de configuração
Hm... Nos hosts linux, se você deseja alterar HOSTNAME e FQDN, deve resolver 3 etapas (por exemplo, novo host é rizzo.ifp.com ):
Etapa #1 Altere o valor de HOST na configuração de propriedades de REDE:
Altere ou adicione string:
Etapa #2 Edite sua configuração de hosts
Passo #3 Reinicie seu host Bem feito, apenas verifique a nova configuração
A ordem não está certa. Tem que ser:
Então o exemplo poderia ser assim: