我不久前已经设置过计算机主机名/etc/hostname
(也有记录/etc/hosts
)。一切工作正常,但最近我注意到hostname
( 和/proc/sys/kernel/hostname
) 的值发生了变化(变为邻居计算机的主机名),尽管我没有触及任何相关内容。的值/etc/hostname
仍然正确。什么样的机制可能会导致这样的变化呢?
有类似问题描述,但它不包含任何解决方案。
答案1
您的内核可能启用了自动配置,并且网络上的 DHCP 服务器正在提供该主机名。
通常,如果存在 DHCP 主机名,则会被忽略/etc/hostname
(例如,systemd-networkd 会执行此操作),但考虑到您提出问题的时间,我猜测当时处理网络配置的任何内容都会优先从 DHCP 响应中获取主机名,而不是从 DHCP 响应中获取主机名。一种是手动配置的。
如果您想检查这一点,请运行 Wireshark 等程序并让它监听您的网络流量。输入过滤器dhcp
,然后拔下并重新插入网络电缆。您应该会看到 DHCP 响应出现,并且您可以在 Wireshark 窗口中检查它们以查看服务器向您发送的主机名。如果它与您所看到的相符,则可以确认它来自哪里。解决方案是将系统配置为忽略 DHCP 响应消息中指定的主机名。