本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
設置有意義且可識別的主機名,有助于簡化管理和維護工作,并增強系統的安全性(例如,基于主機名的訪問控制規則)。本文介紹了設置主機名的常見命令hostname和hostnamectl,以及作為網絡管理服務的NetworkManager如何管理和設置主機名。
使用限制
操作系統:Alibaba Cloud Linux 3。
hostname查詢和設置臨時主機名
通過hostname命令設置的主機名在系統重啟后將失效。為實現主機名的永久化,可以通過修改/etc/hostname
文件來進行設置。
hostname命令查詢主機名。
hostname
hostname命令設置主機名。
以設置主機名為
alinux-dev-test
為例。sudo hostname alinux-dev-test
hostnamectl查詢和設置主機名
hostnamectl
是一個與用戶交互的前端工具,用于設置或顯示主機名及相關信息,并通過調用systemd-hostnamed
服務來實現這些更改。systemd-hostnamed
則是在后臺執行實際主機名管理工作的服務組件。
hostnamectl
查詢主機名。# 查詢靜態主機名 hostnamectl --static # 查詢臨時主機名 hostnamectl --transient
結果如下圖所示。
hostnamectl
設置主機名。設置主機名。
以設置主機名為
alinux-dev-test
為例。sudo hostnamectl set-hostname alinux-dev-test
查看設置后的靜態主機名和臨時主機名。
hostnamectl --static hostnamectl --transient
結果如下圖所示,
hostnamectl
默認同時設置靜態主機名和臨時主機名。查看
/etc/hostname
文件。cat /etc/hostname
結果如下圖所示,
/etc/hostname
文件中也保存最新的靜態主機名。
(重要)NetworkManager管理和設置主機名
NetworkManager在配置網絡連接時會處理與網絡接口相關的主機名設置。當通過NetworkManager修改網絡連接的設置時,NetworkManager將通過dbus
接口通知systemd-hostnamed
進行主機名的更改。
NetworkManager通過在NetworkManager.conf
文件中將hostname-mode
參數值設置為default或dhcp來管理和設置臨時主機名。hostname-mode
的具體參數說明如下:
參數值 | 參數說明 |
default | 默認值。
|
dhcp |
|
none | NetworkManager不會管理和設置臨時主機名。 |
使用示例
如需自行設置主機名,為避免與NetworkManager的主機名管理機制發生沖突,可以通過以下幾種方式進行設置。
(推薦)通過hostnamectl設置靜態主機名。以設置主機名為alinux-dev-test為例。
sudo hostnamectl set-hostname alinux-dev-test
配置
hostname-mode=none
設置NetworkManager不管理主機名。打開
/etc/NetworkManager/NetworkManager.conf
文件。sudo vim /etc/NetworkManager/NetworkManager.conf
按
i
鍵進入編輯模式,在[main]
下面添加以下內容。hostname-mode=none
按
Esc
鍵,輸入:wq
后按Enter
鍵,保存配置。重啟NetworkManager使配置生效。
sudo systemctl restart NetworkManager
通過自定義
systemd
服務設置主機名。在自定義
systemd
服務的service
文件中添加以下配置,以確保其在NetworkManager服務之前啟動。[Unit] Before=NetworkManager.service