本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
设置有意义且可识别的主机名,有助于简化管理和维护工作,并增强系统的安全性(例如,基于主机名的访问控制规则)。本文介绍了设置主机名的常见命令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