在另一個問題,我發現 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 上的其他解決方案對我不起作用。 (即:dnsdomainname
、domainname
等)
答案1
看起來,Puppet 在幕後使用 Facter 來評估網域:
$ facter domain
domain.com
$ facter hostname
kungfumaster
$ facter fqdn
kungfumaster.domain.com
答案就在相關Facter原始碼。
它按順序執行以下操作並使用第一個似乎包含域名的操作:
- 主機名稱-f
- DNS網域名稱
- 解析 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。