![如何使用主机名访问连接到本地网络的设备?](https://linux22.com/image/148171/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E4%B8%BB%E6%9C%BA%E5%90%8D%E8%AE%BF%E9%97%AE%E8%BF%9E%E6%8E%A5%E5%88%B0%E6%9C%AC%E5%9C%B0%E7%BD%91%E7%BB%9C%E7%9A%84%E8%AE%BE%E5%A4%87%EF%BC%9F.png)
我尝试使用设备的主机名及其文件夹路径和文件名(它是一个基本的 PHP 文件)访问本地网络中的服务器中的网页。在第一个系统中,它按预期工作。
但是当我在第二个系统中尝试相同的操作时,连接在同一个本地网络中,我无法使用主机名访问它,但我可以使用服务器的IP地址访问该页面。
第二个系统的DNS是在路由器上配置的,这是我本地网络的DNS。
使用主机名访问服务器是否需要进行任何其他配置?
答案1
(家庭/小型办公室)路由器的 DNS 功能通常仅限于将从本地端到达的任何 DNS 请求转发到 Internet 服务提供商的 DNS 服务器,并将任何响应传递回发出请求的客户端。
无法保证路由器始终能够充当本地网络的全功能 DNS 服务器。有些路由器可能能够做到这一点,但大多数则不能。
即便如此,DNS 服务也不是即插即用的:通常,DNS 服务器的管理员必须在 DNS 服务器上编辑相应的 DNS 区域文件,以便为应可通过名称访问的主机添加 DNS 记录。现代添加了动态 DNS 更新允许主机登记通过名称本身,或者主机可以告诉 DDNS 感知的 DHCP 服务器代表主机执行此操作。
(由于家庭/小型办公室路由器通常还具有内置 DHCP 服务器,因此它可能能够作为单个集成包来完成此操作。)
但不安全的可动态更新的 DNS 服务会带来麻烦,因此默认情况下不太可能启用此类功能。安全的动态 DNS 更新需要一些定义哪个主机可以执行哪些操作的规则,或者某种形式的身份验证。因此,这不能自动完成。
还有其他为主机名解析而开发的服务,不需要显式配置。
多播 DNS (mDNS) 是一种相对较新的解决方案,由 Apple Bonjour、Linux 中的开源 Avahi 软件包以及 Windows 10 中的非常有限的意义(仅网络打印机发现)实现。
链路本地多播名称解析 (LLMNR) 是另一种名称解析协议,无需显式配置,允许本地网络中的系统通过名称相互查找。它在 Windows Vista 及更高版本中实现,在 Linux 中通过
systemd-resolved
.
如果这些服务都不可用(或者您需要解析名称的系统不兼容),则小型网络中的传统后备方法是添加您想要解析的主机的名称和 IP 地址可通过名称解析为/etc/hosts
.当然,您需要在本地网络中的每台主机上执行此操作并保持主机文件同步才能使其真正有用。
(有趣的事实:在互联网的早期,在 DNS 开发之前,hosts
整个互联网曾经有一个集中管理的主文件。维护该hosts
文件变得不可行的事实是导致这种情况的主要原因之一DNS 的开发。)
答案2
您可以在/etc/hosts
文件中添加此主机名。或者您可以创建自己的 DNS 服务器并将所有客户端计算机指向该服务器。
主机文件应如下所示:
#IP hostname
127.0.0.1 localhost
192.168.1.1 router