我的局域网上有一台 Ubuntu 服务器。我可以通过它的 IP 地址充分使用它(samba、ssh、apache2、xmpp……)。但我想使用主机名进行连接(例如 ssh)。当我使用服务器的 IP 地址执行 nslookup 时,答案是:name = noname(这不是服务器的主机名 ;-) 局域网上的其他主机都使用正确的主机名进行响应。
nslookup 10.0.0.24 的输出(这是我的 ubuntu 服务器):没有显示主机名
Server: 127.0.1.1
Address: 127.0.1.1#53
24.0.0.10.in-addr.arpa name = noname.
nslookup 10.0.0.21 的输出(这是我的 raspberryPi):显示正确的主机名。
Server: 127.0.1.1
Address: 127.0.1.1#53
21.0.0.10.in-addr.arpa name = retropie.
所有主机都通过 DHCP 获取其 IP 地址。因此,正确显示其主机名的主机从未单独配置过。
答案1
对于如此小的网络,并且不假设该网络上有 DNS 服务器,您只需将 IP 地址添加到每台机器上的本地主机文件中即可。我知道这有点“老派”,但它将 100% 稳定并且永远不会失败。
dns 可能失败的原因是您的 dhcp 服务器可能正在为您无法控制的 dns 服务器提供 dns 设置,或者该 dns 服务器无法从 dhcp 系统自动更新。如果您将静态条目添加到您的(您控制的 dns 服务器,其 ip 地址通过 dhcp 提供)中,那么您将从网络上的任何机器的 cli 获得正确的 nslookup。
答案2
没有自动系统可以让网络的其余部分知道您的主机名。如果您有 DHCP 服务器(通常在家庭设置中的路由器上),它可能会知道它(我知道我的路由器知道,但我对 DHCP 协议不够了解,不知道它是如何完成的)。如果您想让其他人知道某个名称对应的 IP 地址,您(通常)必须设置 DNS。