有没有办法在不触及“/etc/hosts”的情况下确定机器主机名?

tsh*_*ang 2 networking debian

考虑到我在一个使用 DHCP 分配 IP 地址的 LAN 中(而且我不是它的管理员),我如何设置以便当我ping <hostname>(而不是ping <IP address>,我确实得到一些东西,而没有添加匹配)在“/etc/hostname”中)?我需要在不同的地方为 web 和 ssh 服务器做这个改变吗?

我想知道因为我认为有一段时间我可以在不摆弄“/etc/hosts”的情况下做到这一点(或者我错了?)。该文件的问题在于,我必须在每个想要使用名称到 IP 映射的客户端上执行此操作,并且在某些 IP 地址更改时必须不断更改它。

真正的问题是:是否有一种工具可以对主机名进行网络发现(当然与它们的 IP 地址匹配)。

Kei*_*ith 5

理想情况下,您的系统管理员会使用 DNS 服务器设置网络,并且该 DNS 服务器将使用来自 DHCP 的主机名动态更新。

您可能会尝试使用ICMP 域名消息来获取它们,但我认为这并未得到广泛实施。

另一种较旧的方法是 NIS 服务器。但这些已经不是很常见了。您可以尝试ypcat hosts看看这是否会给您带来回报。

另一个是 zeroconf,支持它的主机广播他们的名字,你可以运行一个缓存它们的服务(Avahi会这样做。如果你已经设置了它,那么 aping <hostname>.local可能已经对你有用。但不是每个节点都支持这个. 您还可以尝试使用 avahi 工具进行查询:avahi-resolve-host-name <hostname>.local如果普通解析器不起作用,则编写一个脚本来为您更新 /etc/hosts。

所以没有其他“神奇”的地方可以从中获取主机名。有人将不得不定义该映射,或使其可动态发现。如果您的系统管理员没有或不会,那么您必须这样做。您可以在本地计算机上执行此操作的唯一位置是 /etc/hosts 文件。因此,如果上述方法均无效,那么您就只能坚持下去了。对不起。