Determine o FQDN quando o nome do host não der?

7

Em outra 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, kungfumaster era o nome do host e era o valor recuperado executando hostname . O Puppet estava gerando certificados que especificam o FQDN kungfumaster.domain.com .

Como o Puppet determinou que esse era meu FQDN? Eu tentei todos os itens a seguir e não vi nada correspondente a *.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.com do Bash? Percebi que domain.com existe de fato em /etc/resolv.conf , mas não consegui encontrá-lo em nenhum outro lugar.

Eu 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. (ex .: dnsdomainname , domainname , etc.)

    
por Naftuli Kay 20.06.2014 / 01:37

2 respostas

7

Parece que, sob o capô, 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á no código fonte relevante do Facter .

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

  1. nome do host -f
  2. dnsdomainname
  3. analisando o resolv.conf para uma entrada de "domínio" ou "pesquisa"
por 20.06.2014 / 02:08
2

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" é meu domínio e "hospeda" o nome do meu sistema.

O FQDN provavelmente vem do DNS do seu roteador, basta executar o que você quiser com esses 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 uso meu próprio DNS e não o roteador, preciso definir o domínio para consultar a parte @ . Estou consultando o nome de domínio dos roteadores.

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

    
por 20.06.2014 / 02:03