Debian的主机名称拒绝粘贴

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

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

hostname ayil 

并编辑/etc/hostname并运行/etc/init.d/hostname.sh start以确保它被激活。

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

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

而不是ayil

我不知道还有什么要做的,在正确的方向有帮助的一点将不胜感激。

粗略地说, hostname显示你的电脑认为它被称为,而hostname -f显示世界认为你的电脑被称为。 更改/etc/hostname会影响显示的hostname 。 要更改hostname -f显示,您应该查看您的networking设置,特别是在您的DNS设置。

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

您不能使用此命令更改FQDN(由主机名–fqdn返回)或DNS域名(由dnsdomainname返回)。 系统的FQDN是parsing器(3)返回的主机名的名称。

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

因此它取决于configuration(通常在/etc/host.conf)如何改变它。 通常(如果在DNS或NIS之前parsing主机文件),可以在/ etc / hosts中更改它。

根据你想使用的$(hostname -f) ,你应该编辑/etc/hosts或者configuration在你的主机或networking上运行的DNS服务器来了解ayil 。 编辑/etc/hosts是让hostname -f显示ayil的最简单途径,但是如果有一个目的是运行hostname -f而不是hostname ,那么很可能您希望信息与存储在本机之外的一些信息保持一致。

您的当前更改将不会适用,直到您重新启动系统,因为内核本身有主机名和域名。 为了使事情正确,我build议在主机example.domain.com上执行这些简单的步骤(其中一些已经完成):

  • 编辑/etc/hostname来包含你的主机名(不带域名)的example
  • 编辑/etc/hosts以匹配您的新主机名。 否则,在sudo或其他系统操作过程中,您将收到主机查找错误。 通常将您的主机名映射到回送。 记得先把FQDN,然后只是主机名。 这个文件的一部分可能看起来像:
 example.domain.com示例localhost.localdomain localhost

如果DNS查询在提示example.domain.comlogging时指向此服务器,则可以省略此步骤。

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

下次您loginshell时,会显示新的example.domain.com主机名。

你有没有检查,以确保DHCP没有设置你的主机名? 做'ps aux | grep dhclient'来查看是否有DHCP客户端正在运行。 如果是,则可以通过查看/ var / lib / dhcp /中的DHCP租用来重新检查DHCP服务器是否分配主机名。 find你的界面的租约文件(如果你使用的是eth0,可能是dhclient.eth0.leases)。 捕获该文件,您可能会发现设置了主机名和域名dhcp选项。

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

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

如果是这样,这是你的挫折的起源。 或者停止使用dhcp并转到静态(如果你这样做,不要忘了给正在运行的dhclient发送一个kill,因为networking重启不会自动终止它,你会发现事情的方式如下一天),或者检查谷歌的方式绕过主机名和域名的DHCP选项。 顺便说一句,不要试图编辑租约文件来纠正问题。 它会在下一次dhcp更新租约时被覆盖,或者更糟的是它不能够续约你的租约,你的主机将失去它的ip。

如果您的服务器正在运行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,如果你的主机允许的话。