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

分享于 

2分钟阅读

互联网

 

问题:

在从ISP中设置局部 Wi-Fi 网络时,如使用路由器和调制解调器,网络上的计算机分配 private IP地址。

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

但是我听说的输出与主机 NAME 解析无关,因为它是由DNS服务器解析的。 那么为什么我可以成功地运行 ssh name@<hostname>,其中 <hostname> 是命令 hostname的输出?


回答 1:

如果你使用 getaddrinfo/gethostbyname,那么使用 nss myhostname的Linux系统将解析当前配置的本地主机名( 在某些系统上是/etc/hostname),。 没有 nss-myhostname的系统通常在 /etc/hosts 中列出本地主机名,并解析本地主机名。

如果你特别执行dns查找( 比如。 使用 nslookup 或者 dig,它绕过 nss,只使用 dns,所以 nss-myhostname没有机会对结果产生影响。

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


回答 2:

这里有几个机制可以在这里工作。

首先,系统将它的本地配置的主机名作为DHCP客户机标识符,路由器( 它也是DHCP和DNS服务器) 将动态添加与该请求的IP。

另一种可以能的情况是,系统是使用多播DNS服务发现( 通过 macOS 上的Bonjour服务或者Linux上的avahi守护进程) 本地配置的主机名。



文件  HOST  
相关文章