hostname -f 和 domainname 导致的域名不一致

hostname -f 和 domainname 导致的域名不一致

我正在设置一个 Postfix 邮件服务器,主机名为“letters”,用于处理域“example.net”的邮件。我尝试使用 nis 将 letters 的域名设置为 example.net,但 hostname -f(“letters.stuff.comcast.net”)和 domainname(“example.net”)的输出不一致。我该如何设置域名以便 hostname -f 命令报告“example.net”?这对 Postfix 的正常运行到底有多重要?

主机信件运行 Ubuntu,并通过电缆调制解调器通过 OpenWRT 路由器连接到康卡斯特的互联网。域 example.net 的名称服务器位于远程 Debian 计算机上,该计算机尚未配置为创建主机或信件别名。

我认为主机名输出中的域名反映了盒子的 dhcp 客户端从 comcast 服务器获取的域名,并反映了盒子是该网络上的客户端的想法。解决方案是在名称服务器上为 example.net 创建“信件”主机吗?这是否还需要将该名称服务器添加到信件的 resolv.conf 文件中列出的服务器中?

答案1

确保您的/etc/hosts(或 NIS)条目正确。

我本来想尝试解释一下,但是手册页的描述更清楚:

THE FQDN
    You can't change the FQDN (as returned by hostname --fqdn) or  the  DNS
    domain  name (as returned by dnsdomainname) with this command. The FQDN
    of the system is the name that the resolver(3)  returns  for  the  host
    name.

    [..]

    Therefore  it  depends on the configuration (usually in /etc/host.conf)
    how you can change it. Usually (if the hosts file is parsed before  DNS
    or NIS) you can change it in /etc/hosts.

答案2

昨天,我在处理其他人启动的服务器刷新时遇到了这个问题......主机名 -f 输出从来没有正确的结尾域(缺少 .org)。

# hostname foobar.example.org
# hostname -f
foobar.example
#

# cat /etc/hosts
10.20.11.244    foobar.example foobar

解决方案:

hostname -f 的域部分似乎来自该主机的 /etc/hosts 条目。在我修复了 /etc/hosts 中的主机名后,hostname -f 返回了正确的域:

# hostname foobar
# hostname
foobar
# hostname -f
foobar.example.org

因人而异。

答案3

如果您的 IP 不是静态的,则此方法/etc/hosts对您不起作用(或只能暂时起作用,直到您获得新的 IP)。我不确定这是否会起作用,但可以尝试以下方法:

  1. 配置您的 dhcp 客户端,使其不从 dhcp 服务器请求域名。或者直接告诉它不要触碰 resolv.conf,如果您有自定义名称服务器,您可能已经这样做了。
  2. 将您的域名设置为 example.net/etc/resolv.conf
  3. 确保您的名称服务器可以解析letters.example.net,我猜您将需要使用某种动态 DNS 服务,因为此解决方案适用于非静态 IP。

这可能意味着我对你的问题的回答很简单:“是”。

答案4

这是“域名”的一个常见误解问题。这是我的 Mac OS X 系统上的手册页顶部,但您的手册页应该类似:

DOMAINNAME(1)             BSD General Commands Manual            DOMAINNAME(1)

NAME
     domainname -- set or print the name of the current NIS domain

此命令不用于DNS配置!

相关内容