Determinar o FQDN quando o nome do host não for fornecido?

Determinar o FQDN quando o nome do host não for fornecido?

Emoutra pergunta, descobri que o Puppet estava gerando certificados para o FQDN da minha máquina, mas não o nome do host simples. Nesse exemplo, kungfumasterera o nome do host e o valor recuperado executando hostname. O Puppet estava gerando certificados que especificavam o FQDN kungfumaster.domain.com.

Como o Puppet determinou que este era meu FQDN? Eu tentei todos os itens a seguir e não vi nada correspondente *.domain.com:

$ hostname -a && hostname -d && hostname --domain && hostname -f && \ 
    hostname --fqdn && hostname -A && hostname --long

kungfumaster
kungfumaster
kungfumaster 
kungfumaster

Como posso obter kungfumaster.domain.comdo Bash? Percebi que domain.comisso de fato existe em /etc/resolv.conf, mas não consegui encontrá-lo em nenhum outro lugar.

Basicamente, quero obter o FQDN da máquina atual como uma string. As outras soluções aqui no unix.se não funcionaram para mim. (ou seja: dnsdomainname, domainname, etc.)

Responder1

Parece que, nos bastidores, o Puppet usa o Facter para avaliar os nomes de domínio:

$ facter domain
domain.com
$ facter hostname
kungfumaster
$ facter fqdn
kungfumaster.domain.com

A resposta está emo código-fonte do fator relevante.

Ele faz o seguinte em ordem e usa o primeiro que parece conter um nome de domínio:

  1. nome do host -f
  2. DNSDomainName
  3. analisando resolv.conf para uma entrada de "domínio" ou "pesquisa"

Responder2

Provavelmente porque o seu sistema faz parte de uma rede de domínio que atribui um nome de domínio. Por exemplo, no meu caso, meu roteador resolve todos os nomes de host na forma de host.lan"lan" sendo meu domínio e "host" o nome do meu sistema.

O FQDN provavelmente vem do DNS do seu roteador, basta executar o que quiser destes comandos:

nslookup your-ip-here
dig -x your-ip-here
host your-ip-here

Um exemplo usando dig:

dig @10.0.0.1 -x 10.0.0.1

; <<>> DiG 9.9.5-4-Debian <<>> @10.0.0.1 -x 10.0.0.1
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11384
;; flags: qr aa rd ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;1.0.0.10.in-addr.arpa.     IN  PTR

;; ADDITIONAL SECTION:
1.0.0.10.in-addr.arpa.  86400   IN  PTR dsldevice.lan.

;; Query time: 2181 msec
;; SERVER: 10.0.0.1#53(10.0.0.1)
;; WHEN: Thu Jun 19 20:01:32 AST 2014
;; MSG SIZE  rcvd: 77

Como utilizo meu próprio DNS e não o do roteador tenho que configurar o domínio para consultar na @parte. Estou consultando o próprio nome de domínio dos roteadores.

Você descobrirá que ele retornará o nome de domínio conforme seu DNS/roteador o vê. Existem várias maneiras de desabilitar isso no roteador, mas descobri que a maneira mais fácil é usar outro DNS.

informação relacionada