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

Tim*_*Tim 4 domain-name-system linux hostname

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

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

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

tec*_*b0y 8

有几种机制可以在这里发挥作用。

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

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


Den*_*ker 7

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

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

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