Mat*_*ska 7 networking linux hostname
我正在创建一个运行 Linux 的小型设备,上面有一个 Web 服务器。我希望它即插即用,连接到网络并使用抽象名称访问它。
是否可以仅使用其主机名访问设备?
use*_*686 11
在某些网络上 - 是的。但是在您日常的 TCP/IP 网络上,主机名必须可转换为 IP 地址,否则客户端将不知道要连接到什么。
但是,有几种现有的本地名称查找协议:
Windows 传统上使用NetBIOS 名称服务来解析同一 LAN 中其他计算机的主机名,使用 UDP 广播。您的服务器需要运行nmbdSamba 组件才能使用 NetBIOS 发现。
最近的 Windows 版本也支持LLMNR,它类似于 mDNS,但功能较少并且需要 IPv6。在 Linux 上,systemd-resolved将有一个 LLMNR 客户端。不知道其他操作系统。可能不值得考虑。
最新版本的 Windows 10 也支持 mDNS。
OS X出于相同目的使用mDNS(“多播 DNS”),有时也称为 Bonjour。(请注意,mDNS 通常不会像 NetBIOS 那样解析裸主机名;相反,它仅限于.local域。)对于 mDNS,您的服务器将需要avahi-daemon.
较新的 Windows 10.19xx 内置了 mDNS 支持(但已禁用)。如果安装了 Bonjour(通常作为 iTunes 的一部分),较旧的 Windows 可以解析 mDNS 名称,如果启用了“Windows 文件共享”或类似服务,OS X 应该支持 NetBIOS。
面向桌面的 Linux 系统通常带有预配置的 NetBIOS 和 mDNS 解析器。(也就是说,它们同时运行nmbd和avahi-daemon,以及 中的相关 glibc NSS 模块/etc/nsswitch.conf。)
最后,大多数“家庭路由器”根据它们从LAN 中计算机发送的DHCP 请求接收的主机名维护本地 DNS 域(.lan、、.home等)。根据您的服务器使用什么,需要“ ”选项,而使用“ ”。dhcpcdhostnamedhclientsend host-name = gethostname()