
我注意到 Red Hat/CentOS 和 Debian/Ubuntu 系統之間設定係統主機名稱的「首選」方法有根本的不同。
CentOS 文檔和RHEL 部署指南說出主機名應該是 FQDN:
HOSTNAME=<value>
,其中<value>
應該是完全限定網域名稱 (FQDN),例如hostname.example.com
,但可以是任何必要的主機名稱。
這RHEL 安裝指南稍微有點含糊:
安裝程式會提示您為此電腦提供主機名,可以是 完全合格的域名(FQDN) 格式主機名稱.域名 或作為以下格式的短主機名主機名稱。
Debian 參考說主機名不應使用 FQDN:
3.5.5。主機名稱
核心維護系統主機名稱。運行等級 S 中的初始化腳本符號連結到“/etc/init.d/主機名稱.sh" 啟動時設定係統主機名稱(使用主機名稱命令)到存儲在“/etc/主機名「。該文件應包含僅有的系統主機名,而不是完全限定的網域名稱。
我還沒有看到 IBM 關於使用哪一個的具體建議,但是一些軟體似乎有偏好。
我的問題:
- 在異質環境中,是使用供應商建議更好,還是選擇一個並在所有主機上保持一致?
- 您遇過哪些軟體對主機名稱設定為 FQDN 還是短名稱敏感?
答案1
我會在整個環境中選擇一致的方法。這兩種解決方案都能正常運作,並且與大多數應用程式保持相容。但在可管理性方面存在差異。
我使用短名稱作為 HOSTNAME 設置,並將 FQDN 設置/etc/hosts
為伺服器 IP 的第一列,後面是短名稱。
我還沒有遇到很多強製或顯示兩者之間的偏好的軟體包。我發現短名稱對於某些應用程式來說更清晰,特別是日誌記錄。也許我不太幸運看到像server.northside.chicago.rizzomanufacturing.com
.誰想在日誌或外殼提示符?
有時,我會參與內部網域和/或子網域發生變化的公司收購或重組。我喜歡在這些情況下使用短主機名,因為日誌記錄、啟動、列印、系統監控等不需要完全重新配置來考慮新網域。
名為「rizzo」且內部網域為「ifp.com」的伺服器的典型 RHEL/CentOS 伺服器設定如下所示:
/etc/sysconfig/network:
HOSTNAME=rizzo
...
-
/etc/hosts:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.100.13 rizzo.ifp.com rizzo
-
[root@rizzo ~]# hostname
rizzo
-
/var/log/messages snippet:
Dec 15 10:10:13 rizzo proftpd[19675]: 172.16.100.13 (::ffff:206.15.236.182[::ffff:206.15.236.182]) - Preparing to
chroot to directory '/app/upload/GREEK'
Dec 15 10:10:51 rizzo proftpd[20660]: 172.16.100.13 (::ffff:12.28.170.2[::ffff:12.28.170.2]) - FTP session opened.
Dec 15 10:10:51 rizzo proftpd[20660]: 172.16.100.13 (::ffff:12.28.170.2[::ffff:12.28.170.2]) - Preparing to chroot
to directory '/app/upload/ftp/SRRID'
答案2
幾乎所有軟體都對正確設定主機名稱很敏感。當我在 Digg 工作時,我曾經因為做了一個看似無害的更改/etc/hosts
影響了系統的主機名稱概念而導致整個網站癱瘓了 2 個小時。輕踩。也就是說,您可能會有點困惑。我不認為該HOSTNAME=
設定直接等同於基於 Debian 的發行版使用/etc/hostname
.
在異質環境中對我有用的是:
- 使用設定管理軟體中的條件,以供應商建議的方式設定主機名稱。
- 使用
hostname
命令設定內核使用的主機名稱等 在
/etc/hosts
:127.0.0.1 localhost 10.0.0.1 hostname.example.com hostname
這個配置還沒有讓我失望。
答案3
您在網上查找參考資料肯定會毫無問題,這些參考資料會告訴您一定要以某種方式進行操作。然而,在我看來,使用短名稱作為主機名,並在 /etc/hosts 中使用完全限定名稱肯定更為普遍。這似乎是更明智的方式,因為需要完全限定名稱的服務可以改為呼叫hostname --fqdn
。
我最近只遇到一款嚴格要求回傳 fqdn 的軟體hostname
,它就是 ganeti。他們記錄了這一點這裡。然而,我不認為他們有任何理由不能適應hostname --fqdn
。
答案4
簡短回答:我通常使用 FQDN 作為主機名稱(按照 RH6/7 文件的建議)。然而,更正確的方法是使用單標籤名稱作為主機名,透過/etc/hosts
.因此,選擇一種方法並儘可能堅持下去。
長答案:使用 FQDN 作為主機名稱的主要優點是機器名稱本質上嵌入了網域資訊。當接收多個客戶/網域的電子郵件警報和/或日誌時,這非常有用,因為它避免了重複的主機名稱(即:主機名稱或多或少保證在多個網站/客戶/網域中是唯一的)。例如,SNMPsysName
預設顯示主機名,透過使用 FQDN,它只是傳達更有用的信息。對於zabbix-agent
(和其他監視工具)或 bash 也是如此$HOSTNAME
。雖然您甚至可以在具有單標籤主機名稱的電腦上配置此類工具以使用 FQDN,或者在清晰顯示包含電腦的網域的分層模型中配置它們,但這是額外的工作。
有些應用程式甚至要求使用 FQDN 作為主機名,但它們是例外。儘管如此,當異常發生時,單標籤主機名稱的同質使用就會遺失。這可能是 RedHat 建議在 RH6/7 上使用 FQDN 作為主機名稱的主要原因。最近的文檔更加模糊。在“執行標準 RHEL 8 安裝”人們可以讀到:
主機名稱可以是格式為 hostname.domainname 的完全限定網域名稱 (FQDN),也可以是不含網域的短主機名稱。許多網路都有動態主機設定協定 (DHCP) 服務,可以自動為連接的系統提供網域名稱。若要允許 DHCP 服務為本機指派域名,請僅指定短主機名
儘管“執行進階 RHEL 8 安裝”狀態:
如果您的網路不提供 DHCP 服務,請務必使用 FQDN 作為系統的主機名
在最初的問題出現之前的幾年裡,用戶應用程式已經學會了處理 FQDN 主機名,而不會出現先前答案中描述的問題。例如,bashPS1
提示字元預設使用\h
(主機名稱到第一個“.”),並且rsyslog
執行不是預設在日誌檔案中保留 FQDN。換句話說,對於許多常用工具來說,FQDN 主機名稱的可用性缺陷已不復存在。由於這些原因,我通常將系統主機名稱設定為 FQDN,並/etc/hosts
根據需要保留短名稱。
原因是不是使用 FQDN 主機名稱是,坦白說,這是正確的做法。正如分別在Debian 文檔和主機名稱手冊頁:
該檔案應僅包含系統主機名,而非完全限定的域名
和
建議該名稱僅包含單一標籤,即沒有任何點
所以,雖然我這樣做感覺很難使用 FQDN 主機名,它是在我的環境中更容易使用它。
請注意,這不是針對單標籤主機名稱的上訴。如果它們對您有效,請繼續使用。否則,請嘗試使用 FQDN 主機名稱。