文件 /etc/hostname 是否曾用于主机名解析?

文件 /etc/hostname 是否曾用于主机名解析?

当使用路由器和调制解调器从 ISP(例如 Verizon)在小型地方设置本地 Wi-Fi 网络时,网络中的机器会被分配私有 IP 地址。

在这样的本地 Wi-Fi 网络中,我可以使用ssh name@<hostname>访问另一台计算机上的 SSH 服务器<hostname><hostname>命令的输出在哪里hostname。 输出是否hostname由某个 DNS 服务器(可能在路由器上?)解析为私有 IP 地址?

但我听说的输出hostname 与 DNS 的主机名解析无关那为什么我能成功运行ssh name@<hostname><hostname>命令的输出在哪里呢hostname

答案1

这里可能有几种机制在起作用。

首先,系统通常会将其本地配置的主机名作为 DHCP 客户端标识符,并且路由器(也是 DHCP 和 DNS 服务器)将为该客户端 ID 动态添加与其为该请求提供的 IP 匹配的 DNS 记录。

另一种可能的情况是,系统正在使用多播 DNS 服务发现(通过 macOS 上的 Bonjour 服务或 Linux 上的 avahi 守护程序)宣传其本地配置的主机名,并且许多现代发行版默认在其 NSS 查找链中包含 mDNS。

答案2

getaddrinfo使用 nss-myhostname 的 Linux 系统将在您使用/时解析当前配置的本地主机名(在某些系统上来自 /etc/hostname)gethostbyname。没有 nss-myhostname 的系统通常会在 中列出本地主机名/etc/hosts,并以此方式解析本地主机名。

如果您特意进行 dns 查找(例如使用nslookupdig),则会绕过 nss 并仅使用 dns,因此 nss-myhostname 没有机会影响结果。

如果您想从其他设备工作,请确保主机名在 DNS 中解析,或在这些设备上ssh@<hostname>列出。/etc/hosts

相关内容