Como o FQDN é determinado?

6

Estou usando o Ubuntu e gerenciando meus hosts usando o Puppet. Até uma máquina ou duas atrás, meus hosts resolveram hostname.backend.example.com. As duas últimas máquinas resolvem para hostname.staging.internal. Estou um pouco perplexo sobre como esses nomes chegaram.

# /etc/resolv.conf
nameserver 173.203.4.8
nameserver 173.203.4.9

domain backend.example.com

e

# /etc/hosts
10.182.230.38  web01.staging.internal web01
127.0.0.1     localhost localhost.localdomain

/ bin / hostname responde assim:

# hostname -a
web01

# hostname -A
108-166-97-91.static.cloud-ips.com web01.staging.internal 

# hostname -I
108.166.97.91 10.182.230.38

Existe um registro DNS que mapeia 108.166.97.91 para web01.backend.example.com. Por que, onde e como o hostname selecionou web01.staging.internal em vez do registro DNS público?

    
por François Beausoleil 08.03.2012 / 06:19

1 resposta

16

O comando hostname retorna resultados do DNS e /etc/hosts .

hostname é equivalente a uname -n e é o "hostname" ou "nodename" real da caixa.
Todos os outros argumentos hostname usam esse nome de nó para procurar informações.

Portanto, antes de prosseguir, devo explicar o formato do arquivo /etc/hosts .
O primeiro campo é bastante óbvio, é o endereço IP que todos os nomes de host na linha devem resolver. O segundo campo é o nome do host principal desse IP. Os campos restantes são aliases.

Portanto, se você executar hostname -f , ele tentará primeiro resolver o IP do seu nome de nó. Dependendo de como você tem a entrada hosts: configurada em /etc/nsswitch.conf , esse método irá variar.

  • Se você tiver configurado para usar o dns, ele usará os domínios de pesquisa configurados em /etc/resolv.conf até receber um IP de volta do DNS.
  • Se você tiver configurado para usar arquivos, procurará em /etc/hosts para encontrar uma linha em que o nome do host primário ou o nome do alias seja seu nome de nó atual ( uname -n ) e retorne o nome do host principal nessa linha .

Quando tiver o IP, ele tentará uma pesquisa inversa nesse IP. Novamente, ele usará DNS para esse e seu arquivo de hosts com base em seu nsswitch.conf . No caso de usar seu arquivo de hosts, ele retornará a entrada principal (que é o primeiro campo após o IP no arquivo).

hostname -a só funcionará com o arquivo hosts, já que fazer uma pesquisa reversa no DNS fornece apenas 1 resultado. Com o arquivo hosts, ele retorna o alises na linha correspondente (que é tudo após a primeira entrada, o hostname primário).

Exemplos
Se o nome do seu nó for 'foobar' e você tiver uma entrada em /etc/hosts como esta:

127.0.0.1 foobar.example.com foobar localhost.localdomain localhost

Então você obterá os seguintes resultados de comando:

# hostname
foobar
# uname -n
foobar

# hostname -f
foobar.example.com

# hostname -a
foobar localhost.localdomain localhost
    
por 08.03.2012 / 06:43