如何更改 Ubuntu 服务器上的 HOSTNAME?

如何更改 Ubuntu 服务器上的 HOSTNAME?

我正在尝试使用 Slicehost 更改共享服务器上的主机名,以便我可以将 Postfix 设置为空客户端。

我编辑了 /etc/hosts
,重启后主机名仍然不正确。
我做错了什么?

username@mail Fri Jul 01 13:01:32 ~   
$ sudo cat /etc/hostname  
mail.domain1.com  

username@mail Fri Jul 01 13:01:45 ~   
$ cat /etc/hosts  
127.0.0.1     localhost localhost.localdomain  
208.78.100.198  mail.domain1.com   

username@mail Fri Jul 01 13:02:13 ~   
$ hostname -f  
pop.where.secureserver.net  

我还打算向该服务器添加另一个域,如何正确配置。

答案1

尝试将 hosts 中的第二行设置为208.78.100.198 mail.domain1.com mail。另外,无需重新启动:FQDN 不存储在任何地方,而是即时查找。

我认为,通过对服务器的 IP 地址进行 DNS 查询,然后获取第一个响应,可以找到 FQDN,这就是这种方法有效的原因。应该可以仅使用 DNS(或 NIS、LDAP 或其他任何查找主机的方法nsswitch.conf)来设置 FQDN,而无需修改主机,但如果它在 hosts 文件中,则不需要网络流量,因为网络流量可能会超时或在紧急情况下导致问题。

更多信息 以下是发生的所有事情(这仅限于 Linux,其他操作系统可能会做些不同的事情):

hostname使用gethostname(2)中指定的函数unistd.h获取主机名。此函数通过调用 实现uname(2),其中nodename提取并返回结构的字段。这将在引导过程的早期通过相应的sethostname(2)调用进行设置,因为内核没有其他方式知道主机的名称。在您的情况下,它将是mail。(顺便说一句,这是您应该在 中拥有的/etc/hostname)。

然后使用标准系统解析器来解析,根据系统实用程序的版本,解析器可以是 或getaddrinfo(3)。返回定义为“主机的正式名称”的gethostbyname(3)字段。我相信这对应于 hosts 文件中列出的第一个名称。h_name

至于您的多个域问题,hostname无法正确处理多个名称。每个接口(甚至是虚拟接口)都可以拥有自己的 IP,有时甚至多个物理接口也可以共享一个 IP。

您应该确保连接到您的主机的每个 IP 都通过反向 IP 查找解析为适当的名称,并正确配置您的邮件服务器。

相关内容