我刚刚安装了 EndeavourOS。我使用命令设置我的主机名sudo hostnamectl set-hostname shuttle
。当我尝试shuttle
从我的其他机器上 ping 时,它无法解析 IP 地址。我有另一台安装了 Kubuntu 的机器,我可以 ping Kubuntu 机器。所以这意味着我的路由器不是问题。我需要启用什么来允许 EndeavourOS 将主机名发送到我的路由器吗?
我刚刚安装了 EndeavourOS。我使用命令设置我的主机名sudo hostnamectl set-hostname shuttle
。当我尝试shuttle
从我的其他机器上 ping 时,它无法解析 IP 地址。我有另一台安装了 Kubuntu 的机器,我可以 ping Kubuntu 机器。所以这意味着我的路由器不是问题。我需要启用什么来允许 EndeavourOS 将主机名发送到我的路由器吗?
在你的两台机器上使用相同的 DNS 服务器,也许你需要检查你的 DNS 服务器,但如果你的服务器场上没有 DNS 服务器,你需要在你的 kubuntu /etc/hosts 文件中添加主机名。
仅设置系统主机名这一事实不足以让网络中的其他系统知道它。
即使您的路由器实际上有一个 DNS 服务可以识别您本地网络上的主机(这无论如何都不确定),您的 DHCP 客户端必须 1.)实际将本地配置的主机名传递给 DHCP 服务器路由器,以及 2.) 实际请求 DHCP 服务器执行 DNS 更新。这两件事都是可配置的,不一定默认启用。通常路由器的“DNS 服务器”本质上只是 ISP 的 DNS 服务的代理,它根本不关心本地网络中的主机。
如果您的本地网络中的主机名解析以前“刚刚起作用”,则它更有可能使用的是替代机制而不是普通 DNS。对于 Linux 和 macOS 系统,这种机制是多播 DNS (mDNS),它是 Avahi/Bonjour/Zeroconf 服务的一部分。Windows 以前使用过 NetBIOS(在 WannaCry 蠕虫利用其中的一个不可修复的设计缺陷后,它现在已被弃用)和 LLMNR(另一种链接本地主机名解析协议),但显然现在也添加了 mDNS 支持。
在 Linux 中,mDNS 的工作原理是
avahi-daemon
定期向本地网段宣布您的系统的身份,并在本地系统上的任何人发出对该系统名称的查询时回复相关信息。这会照顾其他主机能够找到这个主机;另一部分是名称服务器切换模块,它允许 Linux 系统在常规 DNS 之外无缝使用 mDNS。在 Debian 和相关发行版中,它被打包为libnss-mdns
; 如果hosts:
您的/etc/nsswitch.conf
文件的行包含关键字mdns
,mdns4
或mdns6
,它应该正在使用中。还有关键字
mdns4_minimal
,mdns_minimal
,它将仅对使用特殊域名限定的主机名启用 mDNS.local
。所以尝试ping shuttle.local
可能会得到与 just 不同的结果ping shuttle
。或者,如果您
systemd-resolved
用作 DNS 解析器(通过使用关键字resolve
而不是dns
in your或in/etc/nsswitch.conf
的存在来表示),除了经典 DNS 之外,它还可以使用 mDNS 和 LLMNR 来解析其他主机的名称。检查输出以查看 mDNS 是否实际启用。nameserver 127.0.0.53
/etc/resolv.conf
resolvectl
如果您的 EndeavourOS 具有 mDNS 解析器组件或
systemd-resolved
已安装和配置,但没有avahi-daemon
向其他主机宣布其身份,这可以解释为什么 EndeavourOS 可以解析 Kubuntu 系统,但反之则不行。Kubuntu 包含avahi-daemon
在其默认配置中;我对 EndeavourOS 不是很熟悉。