FQDN

FQDN

SuSE-Linux 上的文件/etc/HOSTNAME包含主机名。

这应该是完整合格域名,还是简称(不带“。”)?

相关问题:socket.getfqdn() 不返回域,但 socket.gethostname() 却返回?

答案1

请注意,据我所知,大写字母/etc/HOSTNAME是 SuSe 系统所特有的,但这应该是小写文件名的符号链接/etc/hostname,由 systemd 使用因此也应该出现在其他发行版中。

推荐的 systemd 实用程序hostnamectl 区分三种不同的主机名:

  1. 高级“漂亮”主机名可能包含各种特殊字符(例如“Lennart's Laptop”),存储在/etc/machine-info
  2. 用于在启动时初始化内核主机名的静态主机名(例如“lennarts-laptop”),存储在/etc/hostname

  3. 从网络配置接收的默认临时主机名。

主机名配置文件的手册页man 5 hostname并没有明确使用 FQDN 这一术语,但指出:

/etc/hostname文件配置在启动期间使用系统调用设置的本地系统的名称 sethostname(2)。它应该包含一个以换行符结尾的主机名字符串。
注释(以“#”开头的行)将被忽略。
主机名可以是长度不超过 64 个字符的自由格式字符串;但是,建议它由仅包含 7 位 ASCII 小写字符,无空格或点,并将其限制为 DNS 域名标签允许的格式,尽管这并不是严格的要求。

其中“没有点“唯一的提示是,主机名文件应该只包含系统主机名组件,没有域后缀,因此不是 FQDN。

该命令的手册hostname更加明确(man 1 hostname):

FQDN

您不能hostname --fqdn使用此 [原文如此:] 命令更改 FQDN(由 返回)或 DNS 域名hostname系统的 FQDN 是解析器 (3) 为主机名返回的名称。

换句话说,主机名不是 FQDN。

然后如何配置 FQDN:

技术上:FQDN 是 gethostbyname(2) 返回的主机名的名称。DNS 域名是第一个点后面的部分。

因此,如何更改它取决于配置(通常在 中/etc/host.conf)。通常(如果 hosts 文件在 DNS 或 NIS 之前解析),您可以在 /etc/hosts 中更改它。


顺便说一句:如果你确实使用 FQDN(例如myhost.example.com主机名和)/etc/hostname,那么像dnsdomain和这样的操作hostname -d将返回空字符串,并且不会在第一个点处将该字符串拆分为 DNS 主机名组件myhost和域名组件example.com

相关内容