当主机名未给出时确定 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

我如何kungfumaster.domain.com从 Bash 获得?我注意到它 domain.com确实存在于 中/etc/resolv.conf,但我在其他地方找不到它。

我基本上想以字符串形式获取当前计算机的 FQDN。 unix.se 上的其他解决方案对我不起作用。 (即:dnsdomainnamedomainname等)

答案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。

相关内容