ホスト名で FQDN が指定されていない場合は、FQDN を決定しますか?

ホスト名で FQDN が指定されていない場合は、FQDN を決定しますか?

別の質問、Puppet はマシンの FQDN の証明書を生成していましたが、単純なホスト名の証明書は生成していないことがわかりました。その例では、kungfumasterはホスト名で、 を実行して取得した値でしたhostname。Puppet は FQDN を指定した証明書を生成していましたkungfumaster.domain.com

Puppet はどのようにしてこれが私の FQDN であると判断したのでしょうか? 以下のすべてを試しましたが、一致するものは見つかりませんでした*.domain.com

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

kungfumaster
kungfumaster
kungfumaster 
kungfumaster

Bash から を取得するにはどうすればいいですか? は実際に に存在することkungfumaster.domain.comに気付きました が、他の場所では見つけることができませんでした。domain.com/etc/resolv.conf

基本的に、現在のマシンの FQDN を文字列として取得したいのですが、unix.se にある他のソリューションはうまくいきませんでした。(つまりdnsdomainname、、domainnameなど)

答え1

内部的には、Puppet は Facter を使用してドメイン名を評価しているようです。

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

答えは関連するFacterソースコード

次の処理を順番に実行し、ドメイン名が含まれていると思われる最初のものを使用します。

  1. ホスト名 -f
  2. dnsドメイン名
  3. resolv.conf を解析して「ドメイン」または「検索」エントリを検索する

答え2

おそらく、システムがドメイン名を割り当てるドメイン ネットワークの一部であるためです。たとえば、私の場合、ルーターはすべてのホスト名を の形式で解決します。host.lan「lan」はドメイン、「host」はシステム名です。

FQDN はルーターの DNS から取得される可能性が高いので、次のコマンドのいずれかを実行するだけです。

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

使用例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

ルーターの DNS ではなく自分の DNS を使用しているため、その部分でクエリするドメインを設定する必要があります@。ルーターの独自のドメイン名をクエリしています。

DNS/ルーターが認識したドメイン名が返されることがわかります。ルーターでこれを無効にする方法はいくつかありますが、最も簡単な方法は他の DNS を使用することです。

関連情報