Nomes de host - O que eles são?

54

Recentemente, fui "forçado" a executar algum trabalho de administrador de sistemas, embora isso não seja algo que eu absolutamente goste de ler. Estive lendo, experimentando e aprendendo muito.

Há um aspecto fundamental da configuração do servidor que eu não consegui entender - nomes de host .

No Ubuntu, por exemplo, deve-se definir o nome do host assim (de acordo com a Biblioteca Linode ):

echo "plato" > /etc/hostname
hostname -F /etc/hostname

Arquivo: / etc / hosts

127.0.0.1        localhost.localdomain        localhost
12.34.56.78      plato.example.com            plato

Presumo que platoseja um nome arbitrário e que plato.example.comseja o FQDN.

Agora minhas perguntas são:

  • Isso é obrigatório?
  • Com que finalidade?
  • Onde é necessário / usado?
  • Por que não consigo definir "localhost" como o nome do host de todas as máquinas?
  • Preciso configurar uma entrada DNS para o plato.example.comFQDN?
  • Deve plato.example.comser usado como a entrada DNS reversa para o meu IP?

Além disso, existem "práticas recomendadas" para escolher nomes de host? Vi pessoas usando letras gregas, nomes de planetas e até figuras mitológicas ... O que acontece quando ficamos sem letras / planetas?

Sinto muito se esta é uma pergunta idiota, mas nunca fiquei muito entusiasmado com as configurações de rede.

Alix Axel
fonte
3
Eu acho que Chris S está fora da base aqui. A questão - o que é um nome de host do sistema e como ele se relaciona com o DNS - é válida.
Larsks
@ Chris S: Entendi, acredite em mim. Eu tentei ler uma vez, mas a coisa toda me pareceu imensamente confusa. Não estou aspirando a ser uma SA, apenas tentando entender um pouco melhor o básico.
Alix Axel
Isso deve ir para o wiki da comunidade
lynxman
11
@lynxman: Eu não me importo com isso, mas por quê?
Alix Axel
11
Porque é muito interessante :)
lynxman

Respostas:

28

Atualmente, um sistema pode ter várias interfaces, cada uma com vários endereços, e cada endereço pode até ter várias entradas de DNS associadas a ele. Então, o que significa um "nome do host do sistema"?

Muitos aplicativos usarão o nome do host do sistema como um identificador padrão quando se comunicarem em outro lugar. Por exemplo, se você estiver coletando mensagens syslog em um servidor central, todas as mensagens serão marcadas com o nome do host do sistema de origem. Em um mundo ideal, você provavelmente ignoraria isso (porque não necessariamente confia no cliente), mas o comportamento padrão - se você nomeou todos os seus sistemas como "localhost" - resultaria em várias mensagens de log que você não seria capaz de se associar a um sistema específico.

Como outras pessoas apontaram, o nome do host do sistema também é um identificador útil se você acessar remotamente vários sistemas. Se você tiver cinco janelas conectadas a um sistema chamado "localhost", será difícil mantê-las em ordem.

Da mesma forma, tentamos fazer com que o nome do host do sistema corresponda ao nome do host que usamos para acesso administrativo a um sistema. Isso ajuda a evitar confusões ao se referir ao sistema (em email, conversas, documentação etc.).

Em relação ao DNS:

Você deseja ter entradas DNS de encaminhamento e reversão adequadas para seus aplicativos, a fim de evitar confusão. Você precisa de alguma entrada de encaminhamento (nome -> endereço IP) para que as pessoas possam acessar seu aplicativo convenientemente. Ter a correspondência de entrada reversa é útil por vários motivos - por exemplo, ajuda a identificar corretamente o aplicativo se você encontrar o endereço IP correspondente em um log.

Observe que aqui estou falando de "aplicativos" e não de "sistemas", porque - principalmente com servidores da Web - é comum ter vários endereços IP em um sistema, associados a diferentes nomes de host e serviços.

Tentar manter os mapeamentos de nome para ip em seu /etc/hostsarquivo rapidamente se torna difícil à medida que você gerencia um número crescente de sistemas. É muito fácil para o arquivo de hosts locais ficar fora de sincronia com relação ao DNS, potencialmente causando confusão e, em alguns casos, mau funcionamento (porque algo tenta se vincular a um endereço IP que não existe mais no sistema, por exemplo).

larsks
fonte
Obrigado pela sua resposta, ainda estou confuso se devo (ou preciso) manter o arquivo / etc / hosts em vez de apenas confiar nas entradas DNS.
Alix Axel
8
Geralmente ignoro /etc/hostsem favor do DNS. Isso reduz o número de locais que eu precisava para manter informações sobre o nome -> mapeamento de endereços. Na maioria dos sistemas que mantenho, /etc/hostscontém apenas uma entrada para localhost.
Larsks
Quando você lida com clusters - como ganeti ou um cluster Linux-HA / Corosync - / etc / hosts é usado para conversar entre os membros do cluster. É ruim confiar apenas no DNS porque seu serviço DNS pode estar nesses clusters e ser migrado ou offline durante uma alteração de nó; portanto, o / etc / hosts e um nome de host correto o ajudarão bastante.
Coredump
então, em relação a "único", estamos mais "tentando" ser "únicos" do que "deve" ser único, correto? Como existem muitos servidores por aí e todos estão no mesmo escopo, ser "único" real é impossível. Esse entendimento está correto?
shenkwen
10

Você pode definir todo nome de host como "localhost", mas é muito útil ter alix@plato ~ $no prompt de comando quando você gerencia máquinas através do ssh. Gerenciar servidores remotamente pode se tornar muito confuso se você não o fizer.

Ter um FQDN correto é importante para quando você hospeda um servidor web ou servidor de correio. Esses tipos de aplicativos de servidor gostam de saber "em quem" eles estão sendo executados.

Para escolher um bom esquema de nomeação, remeto-o para essa pergunta muito popular .

Um FQDN se torna útil apenas quando é significativo para outro computador. Existem três níveis para isso:

  • Um computador em sua rede local possui uma entrada no arquivo de hosts que aponta para essa máquina
  • Você tem um servidor DNS em execução na rede local e todos os computadores locais que o utilizam como servidor DNS agora conhecem o nome plato.
  • Você registra um nome de domínio e agora o mundo inteiro sabe para qual máquina o nome plato.alixaxel.com aponta.

Ao enviar email ou exibir páginas da Web para o mundo exterior, o terceiro é o que você deseja ter. Na maioria dos outros casos, você pode se contentar com um DNS local ou até mesmo editar arquivos de hosts.

Nesse caso, você pode apenas criar um nome de domínio (plato.alixnetwork pode ser bom como um FQDN) para uso em sua rede local. O único valor agregado de ter a parte "alixnetwork" (o nome de domínio) é a conveniência quando você tem outra rede local da qual deseja distingui-la.

Kenny Rasschaert
fonte
Obrigado kenny, acho que minha principal dúvida é por que é importante que um servidor de web / email tenha um FQDN adequado. Além disso, o que constitui um FQDN "adequado"? Devo apenas acrescentar o nome do host ao domínio e apontá-lo para o endereço IP público? Tenho a impressão de que tenho que criar entradas DNS A / AAAA com o nome do host, não?
Alix Axel 28/01
Depende do que você deseja alcançar. Se você não enviar e-mails ou exibir páginas da Web para o mundo com o Platão, realmente não há necessidade de criar um registro DNS global para essa máquina.
precisa saber é o seguinte
"Você registra um nome de domínio e agora o mundo inteiro sabe para qual máquina o nome plato.alixaxel.com aponta". Eu não entendo isso. O mundo inteiro não sabe para qual máquina o nome plato.alixaxel.com aponta, verificando a resolução DNS de "alixaxel.com"? O que isso tem a ver com a configuração de um FQDN em uma máquina aleatória?
shenkwen
8

Uma visão geral básica. Nome do host são apenas ponteiros; você pode atribuir um específico ao nome do host referenciado pela máquina, mas pode ter vários. Alguns serviços, correio notável e HTTP contam com nomes de domínio para saber onde os serviços devem estar localizados e como chegar a eles.

Há muito tempo, todos esses nomes (que novamente são apenas indicadores de endereços IP) eram mantidos em um arquivo chamado hosts. À medida que o sistema cresceu, eles não conseguiram manter o arquivo sincronizado em todos os computadores relevantes que participavam das várias redes interconectadas. Então o sistema DNS foi inventado. Quando você faz uma pesquisa de nome, ele ainda verifica o arquivo de hosts primeiro e depois o sistema DNS. O Windows também pode verificar outros sistemas como WINS ou NetBIOS.

Quando você coloca uma entrada em um hostsarquivo, não a está atribuindo ao computador. A atribuição de um nome de host como o usado pelo computador é feita nos arquivos de configuração (nos sistemas * nix) e nas Propriedades do sistema nos sistemas Windows (o sistema Windows também pode ter sufixos específicos da NIC).

As entradas no hostsarquivo, como o sistema DNS, são apenas um mapeamento de um nome de host para um endereço IP. Para usar o nome do host 'localhost' (não há nada de especial nele, é um nome de host como todo o resto), ele deve ser mapeado para a interface de loopback (para que sempre aponte para o computador local). Para garantir que isso funcione, todos os computadores vêm com esse mapeamento padrão em seus hostsarquivos, mas ele pode ser removido, se você não quiser usar esse nome de host.

Além disso, como outros observaram, é muito útil atribuir um nome de host a um computador. Quando conectado ao computador, você pode exibir o nome do host ao fazer login, ou quando solicitado, ou em qualquer outro local. Isso facilita a identificação do computador ao qual você está conectado. Se você configurar esse nome de host no DNS ou colocá-lo em todos os hostsarquivos, poderá conectar-se ao computador fazendo referência ao nome do host em vez de precisar saber o endereço IP o tempo todo. (Ainda mais útil se o computador estiver usando DHCP, pois o endereço pode mudar. Se o computador atualizar o DNS, o registro DNS apontará para o novo endereço IP; você ainda poderá se conectar sem conhecer o novo endereço IP porque conhece o nome DNS. )

Existem muitos outros usos de hostsDNS e de ambos , mas suspeito que você tenha mais perguntas do que respostas se ler tudo isso.

Chris S
fonte
4
+1 por escrever uma boa resposta, apesar do seu sentimento inicial de frustração com a pergunta.
precisa saber é o seguinte
Explicação impressionante! Se meu entendimento estiver correto, /etc/hostsnão é necessário colocar o FQDN no , ter o nome do host em uma entrada DNS atingiria o mesmo resultado, certo?
Alix Axel
2
@Alix, correto, se a entrada estiver no DNS (e o DNS estiver funcionando corretamente), tê-la no hostsarquivo seria redundante. Além disso, a entrada no hostsarquivo substituirá o DNS (útil para testar algumas vezes, irritante quando você esquece). Observe que isso é tudo em relação aos registros A e AAAA, existem outros tipos de registros para nomes de host, mas eu os deixei de fora para maior clareza.
Chris S
Obrigado Chris, isso torna tudo muito mais claro.
Alix Axel
5

Todo host deve receber um nome significativo. O nome do host pode atender a vários propósitos:

1- Ajuda a reconhecer em que você está trabalhando atualmente.

2- Usar nomes configurados nos /etc/hostsregistros DNS e / ou é mais fácil do que memorizar muitos endereços IP.

3- Localhost é um nome reservado para se referir à máquina atual (endereço 127.0.0.1).

4- Os registros DNS são úteis para tornar seus servidores acessíveis ao público.

Escolher um nome adequado para cada servidor ajuda muito na sua administração. Além disso, ajuda seus clientes a acessar seus servidores.

Khaled
fonte
2

Apenas como uma observação lateral: trabalhar adequadamente para frente e para trás na resolução DNS é a pedra angular absoluta de todas as instalações de TI neste planeta. Nunca subestime a necessidade de um DNS bem mantido e a resolução adequada de nome de host!

pfo
fonte
Não consigo entender por que isso é importante. Eu tenho um servidor linode que hospeda muitos sites. Não entendendo o propósito de definir o nome do host, apenas deixo como está, que é "ubuntu". Este servidor está em funcionamento há alguns anos e nunca sinto nenhum inconveniente. Não estou questionando sua resposta, estou apenas tentando entender por que o nome do host é importante. No meu caso, quando eu gostaria de ter definido corretamente um nome de host?
shenkwen
11
@shenkwen - se você honestamente tiver apenas um servidor, poderá nomeá-lo como desejar, e obviamente isso não importa. Assim que o número de servidores se tornar maior que 1, você terá novos problemas para gerenciar e a nomeação adequada é uma ferramenta importante.
mfinni
1

Isenção de responsabilidade: a principal questão é sobre os sistemas Linux, portanto, fique à vontade para ignorar esta resposta se você não estiver interessado no lado do Windows da questão.

De qualquer forma, nos sistemas Windows, além de todos os pontos mencionados em outras respostas, o nome do host é realmente usado pelo próprio SO, para fins de rede e autenticação; especificamente:

  • Cada sistema, seja ele ou não um membro do domínio, deve ter um nome exclusivo na mesma rede (ou seja, na mesma sub-rede IP); caso contrário, ocorrerá um conflito de nomes e vários serviços de rede (principalmente compartilhamento de arquivos e impressões) não trabalhos.
  • Todos os sistemas que são membros do mesmo domínio do Active Directory precisam ter um nome exclusivo, independentemente dos limites da rede.
  • Em um ambiente de domínio, o nome do host de um sistema atua como principal de segurança e pode ser usado para autenticação remota (pense nisso como uma conta de usuário para a máquina); ele pode receber permissões e direitos de acesso e pode ser colocado em grupos por motivos de segurança. Isso afeta todos os processos em execução no sistema usando as contas internas LocalSysteme de NetworkServiceusuário, que podem ser autenticadas em outros sistemas usando as credenciais do sistema em que estão executando; isso permite que um processo em execução NetworkServiceno SystemA acesse uma pasta compartilhada no SystemB concedendo permissões na pasta à conta de usuário do SystemA.
Massimo
fonte
-1

Muitos sites e / ou supostos 'admins' agora estão declarando que o atributo 'hostname' contém o FQDN da instância do SO, que 'quebra' qualquer resolução que acrescente o 'domainname' a ele:

hostname
system1.domain1.org

ping hostname
- não é possível resolver system1.domain1.org.domain1.org

zantar
fonte
Você pode fornecer uma fonte de referência para sua declaração?
Dave M