Entenda o nome do host e / etc / hosts


12

Em / etc / hostname, eu tenho myname.

No / etc / hosts, tenho:

127.0.0.1   localhost.localdomain   localhost myname
::1     localhost.localdomain   localhost myname

Eu tenho uma vaga compreensão do que realmente é um nome de host e para que é usado.

Essas perguntas mais precisas podem me ajudar a entender melhor:

  1. Qual é realmente o meu nome de host no exemplo acima? mynameou alguma outra coisa? Se eu tivesse, em vez myname.domain.comde /etc/hostname, qual seria o meu verdadeiro nome de host, então?

  2. No exemplo, o comando hostnameretorna myname, enquanto o comando hostname -fretorna localhost.localdomain. Eu tinha em mente que /etc/hostsera apenas um mapeamento entre nomes e endereços IP. Parece servir outra função aqui. O que é um fqdn e para que é usado? Como é recuperado? Por que é isso localhost.localdomain?

  3. Se eu tivesse, em vez myname.domain.comde /etc/hostname, hostname -fvoltaria myname.domain.com. Por quê?

  4. Por que o fqdn não termina com um ponto nesses arquivos?

  5. São hostname -de dnsmydomainequivalentes?

  6. Em que contexto posso usar meu hostname ( myname) e quando devo usar meu fqdn ( localhost.localdomain)?

Respostas:


9
  1. /etc/hostnamecontém o nome da máquina, como é conhecido pelos aplicativos que são executados localmente. /etc/hostse DNS associam nomes a endereços IP. mynamepode ser mapeado para qualquer endereço IP ao qual a máquina possa acessar, mas o mapeamento 127.0.0.1é antiestético.
  2. Não /etc/hosts, mas /bin/hostnameserve outra função com -f.
  3. Porque /etc/hostspode substituir o senso comum . Edite-o com cuidado e não deixe lixo lá depois de remendos e experimentos temporários.
  4. Ambos os estilos (⋯ .TLD. e ⋯ .TLD ) são aceitáveis. O primeiro é inequívoco, enquanto o último é onipresente.
  5. Não sei o que dnsmydomainé, mas improvável. Buscar algo /etc/hostsnão é tecnicamente "DNS".
  6. Lembre-se do ponto 1. Nome do host - para aplicativos executados localmente; também para protocolos de rede peculiares como SMB (samba). FQDN (se não for um falsário ou um espaço reservado localhost.localdomain) - para acessar a máquina de fora. O FQDN deve ser resolvido onde for usado.

1
E se o meu IP for dinâmico (DHCP) e mudar de tempos em tempos? qual endereço devo usar como mynameem / etc / hosts?
user156516

3

Eu odeio absolutamente quando alguém me diz para ler o manual, mas, neste caso, consulte a página de manual do nome do host e a maioria, se não todas, suas perguntas devem ser respondidas. Está escrito muito melhor do que eu poderia explicar.

Para fornecer assistência, alguns dos trechos que aparecem nas suas perguntas são: - Seu nome de host é o que você vê em / etc / hosts. - O FQDN retornado é baseado no que o resolvedor retorna, portanto, por que você vê o valor em / etc / hosts sendo retornado quando o resolvedor verifica o arquivo de hosts primeiro e, em seguida, faz as consultas DNS necessárias.

Aquele em que não acredito que seja mencionado na página de manual do nome do host (com base na minha leitura da página de manual) é o motivo pelo qual as entradas nos arquivos não terminam com um ponto.

Essa convenção é usada ao lidar com registros DNS. O nome do host e os arquivos do host não são realmente registros DNS. Se você estava configurando essas entradas no bind para serem resolvidas para pesquisas de DNS, o uso de um ponto pode entrar em jogo (confira este bom recurso: http://www.zytrax.com/books/dns/apa/dot.html )

Além disso, lembre-se de que todos esses valores não são transmitidos pelo sistema. Portanto, se você deseja que outro sistema acesse com base no FQDN, ele se baseia no arquivo de hosts desse outro sistema ou na falta de entradas de hosts com base nas pesquisas de DNS que o sistema externo faz no FQDN para permitir que ele retorne ao diretório sistema.


Relacionado, sobre o ponto final em /etc/hosts: serverfault.com/questions/336056/setting-fqdn-hostname-and-dot
John WH Smith -

3

Em resposta a

E se o meu IP for dinâmico (DHCP) e mudar de tempos em tempos? qual endereço devo usar como meu nome em / etc / hosts?

Deixe-me salientar, primeiro, que / etc / hosts é uma definição estática de mapeamento de nome para endereço para o host no qual está instalado e é SOMENTE usado por esse host para converter nome em endereço IP.

Portanto, existem 2 pontos de vista a serem considerados - o host 'myname' e todos os outros.

Para esse host 'myhost', faça referência ao host atual usando 'localhost' (que é definido em / etc / hosts como 127.0.0.1) ou adicione 'myname' à linha / etc / hosts que define localhost para que 'myname 'sempre mapeia para, bem, localhost. Igual a:

127.0.0.1 localhost myname

Então não importa qual endereço IP o INTERFACE recebe, você sempre terá um endereço que funcione (um bônus adicional é que você não precisa acessar o hardware para falar de 'meu nome' para 'meu nome').

Agora, para permitir que OUTROS hosts encontrem 'myhost' quando 'myhost' tiver um endereço IP dinâmico, você deve usar o DNS e o servidor DNS deverá lidar com os mapeamentos atribuídos por DHCP. (Bem, ok, existem outras soluções em que posso pensar, mas tudo o que vem à mente se encaixa na categoria 'além de boba', IMHO. Bem, ok, há coisas que você pode fazer com o host para que a TI informe o DNS onde está, mas essa é uma pergunta digna de uma pergunta / resposta completamente diferente aqui, IMHO)


2

/ etc / hostname e / etc / hosts são simples, mas também não tão simples ...

Como configurar rapidamente o Debian /etc/hostnamee/etc/hosts

1) Edite / etc / hostname .

Existem 2 maneiras válidas de configurar isso.

Ou faça isso:

  • machine, ou seja, um nome simples de uma palavra para este processador.
    Por exemplo, ' joe' pode ser o nome da máquina que você escolheu.
    Observe que isso exigirá um alias no / etc / hosts, descrito mais adiante.

OU

  • machine.domain.net, ou seja, um nome de domínio totalmente qualificado (FQDN).
    Por exemplo, ' joe.xyz.com'.
    (Isso pressupõe que você tenha um registro de host DNS 'A' apontando de joe.xyz.com para o endereço IP do seu joe, ou seja, na sua máquina chamada joe. Normalmente, você configura esse registro onde comprou seu nome de domínio. Mais sobre isso em um momento.)

Depois que o / etc / hostname estiver definido, o próximo passo é obter os comandos hostname --all-fqdne dnsdomainnamefuncionar corretamente, nessa ordem, da seguinte maneira:

2) Edite / etc / hosts .

Nele há uma linha para o FQDN deste host , por exemplo, 'machine.domain.net', prefixado com o endereço IP desta máquina (possivelmente de um servidor de endereço IP dinâmico) como este:

#   IP           FQDN (CANONICAL_HOSTNAME)   ALIASES
#-------------- --------------------------- ------------------------
192.168.1.14    Joe.xyz.com                 joe
  • Primeiro, observe que maiúsculas ou minúsculas não importam aqui. Dica: no entanto, colocar alguns limites nos permite perceber de onde vêm as coisas nas próximas etapas. Então, eu tenho capitalizado J oe.

  • Observe também que, parahostname que o simples (ou seja, / etc / hostname = 'máquina') gere corretamente um FQDN, um alias chamado 'máquina' deve estar presente em / etc / hosts. É por isso que o apelido Joe está lá. (BTW, não há problema em ter esse alias mesmo se você não estiver usando.) Caso contrário, esse alias não será necessário nem usado.

  • Observe também que 'domain.net' deve ser resolvível, ou seja, deve existir um registro A no DNS. Isso é chamado de ' resolvível ' (ou seja, pelo resolvedor de DNS).

3) Agora instale essas novas configurações de / etc / hostname e / etc / hosts no kernel, executando:

    $ /etc/init.d/hostname.sh       # Or by rebooting

4) Nome do host de teste

$ hostname      # Reports the hostname previously read from in /etc/hostname.
joe

OU

$ hostname
joe.xyz.com

Dicas:

  • Observe que atualmente não é o que / etc / hostname é, como se você o editar novamente agora, mas sim o que foi lido anteriormente pelo script /etc/init.d/hostname.sh, possivelmente como resultado de uma reinicialização.

  • Observe também que o 'j' é minúsculo, então isso sugere que ele é proveniente de / etc / hostname, não / etc / hosts.

5) Teste FQDN

$ hostname --all-fqdn   #reports the FQDN(s) matched in /etc/hosts.
Joe.xyz.com             #  It searches /etc/hosts for the joe in /etc/hostname.
                        #  Notice that the 'J' is uppercase.  
                        #     This suggest it came from /etc/hosts.

6) Teste o nome de domínio DNS

$ dnsdomainname         #reports the computed DNS doman name    
xyz.com                 #  (i.e. the right most part of the FQDN; 
                        #    the part to the right of the first, left most, dot)
                        #  This is coming from Joe.xyz.com in /hosts, 
                        #    after 'Joe.' is removed.

Agora, isso deve facilitar a configuração de um servidor da web e de email.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.