温馨提示×

Linux hostname有什么命名规则

小樊
36
2026-08-21 15:36:56
栏目: 智能运维

在 Linux 中,hostname(主机名) 有一套约定俗成的命名规则和系统限制,不同发行版基本遵循 RFC 952 / RFC 1123 标准。下面从允许字符、长度限制、推荐规范、系统限制几个方面说明。


一、基本命名规则(标准)

1️⃣ 允许使用的字符

一个合法的 hostname 通常只能包含:

  • 小写字母 a–z
  • 数字 0–9
  • 连字符 -
  • 不能以下划线 _ 开头或结尾(部分系统禁止)
  • 不能包含空格
  • 不能包含点 .(除非是 FQDN)

✅ 示例:

server01
web-node-1
db-master

❌ 不推荐或非法:

server_01
web node
-hostname-

二、长度限制

1️⃣ 内核限制

  • 最大长度:63 字节(不含域名)
  • 完整 FQDN(完全限定域名) 最大 255 字节
getconf HOST_NAME_MAX
# 通常是 64(含结尾 \0)

三、静态主机名 / 临时主机名 / 漂亮主机名(systemd)

使用 systemd 的系统(如 CentOS 7+、Ubuntu 16+)区分三种 hostname:

1️⃣ Static hostname(静态主机名)

  • 保存在 /etc/hostname
  • 重启后仍然有效
  • 遵循严格命名规则
hostnamectl set-hostname server01

2️⃣ Transient hostname(临时主机名)

  • 由内核维护
  • 可从 DHCP 获取
  • 重启后可能变化

3️⃣ Pretty hostname(漂亮主机名)

  • 可包含空格、中文、特殊字符
  • 仅用于展示
hostnamectl set-hostname "Web Server 01" --pretty

四、FQDN(完全限定域名)规则

如果 hostname 包含点 .,通常是 FQDN

server01.example.com

规则:

  • 每段(label)最长 63 字符
  • 只能包含字母、数字、连字符
  • 不能以 - 开头或结尾

五、/etc/hosts 中的一致性要求

hostname 通常应在 /etc/hosts 中解析到本机 IP:

127.0.1.1  server01
# 或
192.168.1.10 server01

否则可能导致:

  • sudo
  • 服务启动慢
  • 某些程序报错

六、推荐命名规范(最佳实践)

✅ 推荐格式

角色-序号.环境.域名

示例:

web-01.prod.example.com
db-master.staging.internal

✅ 常见约定

  • 全小写
  • 不用 _
  • 不用特殊字符
  • 有语义(见名知意)

七、检查与设置命令

# 查看 hostname
hostname

# 查看详细信息
hostnamectl

# 设置 hostname(永久)
hostnamectl set-hostname server01

# 临时设置
hostname temp-name

八、快速总结表

项目 规则
字符 a–z 0–9 -
长度 ≤ 63
是否区分大小写 不区分(建议小写)
是否允许空格
是否允许 _ ❌(不推荐)
是否允许 . ✅(仅 FQDN)
推荐风格 小写下划线

如果你愿意,我也可以帮你:

  • ✅ 设计一个 服务器命名规范
  • ✅ 检查你当前 hostname 是否合法
  • ✅ 解释 hostname vs /etc/hosts vs DNS 的关系

0