我正在使用 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 -f
ayil
hostname -f
hostname
答案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/dhcp/ 中的 DHCP 租约来仔细检查 DHCP 服务器是否正在分配主机名。在那里找到您的接口的租约文件(如果您使用的是 eth0,则可能是 dhclient.eth0.leases)。cat 该文件,您可能会发现主机名和域名 dhcp 选项已设置。
例如,提示符下的主机名是“dhcpuser-82”,完整域名是“dhcpuser82.dh.example.com”。我的 /var/lib/dhcp/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(如果您的主机允许的话)。