Debian 主机名拒绝保留

Debian 主机名拒绝保留

我正在使用 VirtualBox 进行测试,并拥有最新的稳定 Debian。

当我尝试使用以下方式设置机器的主机名时:

hostname ayil

并编辑/etc/hostname和运行/etc/init.d/hostname.sh start以确保其已激活。

每当我运行时hostname -f它都会返回:

未知-08-00-27-47-ef-30.config

而不是ayil

我不知道还能做什么,如果能给出正确的指导意见我将非常感激。

答案1

粗略地说,hostname显示您的计算机认为它叫什么,而hostname -f显示世界认为您的计算机叫什么。更改/etc/hostname会影响hostname显示的内容。要更改hostname -f显示的内容,您应该查看您的网络设置,特别是您的 DNS 设置。

以下是手册页的相关摘录hostname(1)

您无法使用此命令更改 FQDN(由 hostname --fqdn 返回)或 DNS 域名(由 dnsdomainname 返回)。系统的 FQDN 是 resolver(3) 为主机名返回的名称。

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

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

根据您要使用$(hostname -f)的用途,您应该编辑/etc/hosts或配置主机或网络上运行的 DNS 服务器以了解ayil。编辑是显示/etc/hosts的最简单方法,但如果运行而不是 有目的,则您可能希望信息与存储在此机器之外的某些信息一致。hostname -fayilhostname -fhostname

答案2

由于内核本身已考虑了主机名和域名,因此您当前的更改只有在您重新启动系统后才会生效。为了确保一切顺利,我建议在主机上执行以下简单步骤(其中一些您已经完成)example.domain.com

  • 编辑/etc/hostname以包含您的主机名(不含域名)example
  • 编辑/etc/hosts以匹配您的新主机名。否则,在 sudo 或其他系统操作期间,您将收到主机查找错误。这通常是将您的主机名映射到环回。请记住先输入 FQDN,然后再输入主机名。此文件的一部分可能如下所示:
127.0.0.1 example.domain.com 示例 localhost.localdomain localhost

如果在提示记录时 DNS 查找将指向此服务器,则可以省略此步骤example.domain.com

  • 更新内核主机名和域名记录:
sudo sysctl -e kernel.hostname=example
sudo sysctl -e kernel.domainname=domain.com

下次登录时,shell 提示符将显示新的example.domain.com主机名。

答案3

您是否已检查以确保 DHCP 未设置您的主机名?执行“ps aux | grep dhclient”以查看 DHCP 客户端是否正在运行。如果正在运行,您可以通过查看 /var/lib/dh​​cp/ 中的 DHCP 租约来仔细检查 DHCP 服务器是否正在分配主机名。在那里找到您的接口的租约文件(如果您使用的是 eth0,则可能是 dhclient.eth0.leases)。cat 该文件,您可能会发现主机名和域名 dhcp 选项已设置。

例如,提示符下的主机名是“dhcpuser-82”,完整域名是“dhcpuser82.dh.example.com”。我的 /var/lib/dh​​cp/dhclient.eth0.leases 文件如下所示:

...blah blah
选项主机名“dhcpuser-82”;
选项域名“dh.example.com”;
...更多blah blah

如果是这样,这就是您感到沮丧的根源。要么停止使用 dhcp 并转为静态(如果这样做,请不要忘记向正在运行的 dhclient 发出终止命令,因为网络重启不会自动终止它,第二天您会发现一切恢复原状),要么在 Google 上查找绕过主机名和域名 DHCP 选项的方法。顺便说一句,不要尝试编辑租约文件来纠正问题。下次 dhcp 更新租约时,它将被覆盖,或者更糟的是它将无法续订您的租约,并且您的主机将丢失其 IP。

答案4

如果您的服务器正在运行 DHCP 客户端,则每次续订租约时它可能会重置您的主机名。检查/etc/default/dhcpcd并查找以下行:

# Uncomment this to allow dhcpcd to set hostname of the host to the
# hostname option supplied by DHCP server.
SET_HOSTNAME='yes'

您可能想要注释掉该SET_HOSTNAME行。

您可以尝试的另一件事是为您的 IP 设置反向 DNS(如果您的主机允许的话)。

相关内容