是否可以使用主机名连接到设备?

是否可以使用主机名连接到设备?

我正在创建一个运行 Linux 的小型设备,上面有一个 Web 服务器。我希望它能即插即用,连接到网络并使用抽象名称进行访问。

是否可以仅使用主机名来访问设备?

答案1

在某些网络上 – 是的。但在日常 TCP/IP 网络上,主机名必须可以转换为 IP 地址,否则客户端将不知道要连接什么。

不过,目前有几种用于本地名称查找的协议:

  • Windows 传统上使用NetBIOS 名称服务用于使用 UDP 广播解析同一 LAN 中其他计算机的主机名。您的服务器需要运行nmbdSamba 的组件可通过 NetBIOS 发现。

    (2023:NetBIOS 于 2013 年退出历史舞台,目前普遍认为已经彻底过时。)

    最近的 Windows 版本也支持法律硕士,它与 mDNS 类似,但功能较少且需要 IPv6。在 Linux 上,systemd-resolved将拥有 LLMNR 客户端。不知道其他操作系统。可能不值得考虑。

    (2023:LLMNR 已经退出历史舞台,甚至在 Windows 上也被 mDNS 取代。)

    Windows 10 的最新版本也支持 mDNS。

  • OS X 使用移动DNS(“多播 DNS”),有时也称为 Bonjour,用于相同目的。(请注意,mDNS 通常不会像 NetBIOS 那样解析裸主机名;相反,它仅限于域.local。)对于 mDNS,您的服务器将需要avahi-daemon

    较新的 Windows 10.19xx 内置了 mDNS 支持(但已禁用)。如果安装了 Bonjour(通常作为 iTunes 的一部分),较旧的 Windows 可以解析 mDNS 名称,如果启用了“Windows 文件共享”或类似服务,OS X 应该支持 NetBIOS。

    (2023:Windows 现在默认提供 mDNS。)

  • 面向桌面的 Linux 系统通常预配置了 NetBIOS 和 mDNS 解析器。(也就是说,它们同时运行nmbdavahi-daemon,以及 中的相关 glibc NSS 模块/etc/nsswitch.conf。)

    (2023:默认情况下不再使用 NetBIOS,只有有时使用 mDNS 和/或 LLMNR。)

  • 最后,大多数“家用路由器”都维护着本地 DNS 域.lan,,.home等)根据收到的主机名来自 DHCP 请求由局域网内的计算机发送。根据您的服务器使用情况,dhcpcd需要“ hostname”选项,而dhclient使用“ send host-name = gethostname()”。

    (2023 年:一点都没变。)

相关内容