如何在 Arch Linux 中使用 .local 主机名?

如何在 Arch Linux 中使用 .local 主机名?

如果我使用 Ubuntu 或 Linux Mint(我尝试过并且知道这两种版本确实有效),我可以运行如下命令:

wayne@myhost$ ssh [email protected]

并且该名称会自动解析为我的本地网络上其他主机的 IP。

我决定开始扩展到其他发行版,并且我的笔记本电脑上运行了 Arch - 但如果我尝试使用之前的命令,我会得到Could not resolve hostname otherhost.local: Name or service not known

需要什么才能实现这种自动名称解析(?)?

答案1

韦恩自己的答案现在已经很老了。此后,Arch 转而使用 systemd 而不是 init 脚本。 Arch 维基百科阿瓦希页面已更新,并包含有关为何需要执行以下步骤的详细信息。简而言之:Avahi 是一个零配置工具,这意味着一旦安装在 LAN 的所有计算机上,它就无需配置即可工作,但您必须配置软件的其余部分,以便它实际上向 Avahi 询问信息。

以 root 身份运行它们,或sudo在终端中适当地添加前缀,然后替换nano为您选择的编辑器。

  1. pacman -S avahi nss-mdns安装 Avahi 服务守护程序和多播 DNS 解析器。
  2. nano /etc/nsswitch.conf该文件告诉 C 库如何获取名称服务信息。
  3. 将行更改hosts: mymachines resolve [!UNAVAIL=return] files myhostname dnshosts: mymachines mdns_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] files myhostname dns,保存并退出。该mdns_minimal服务处理查找,必须在和.local之前添加。resolvedns
  4. systemctl start avahi-daemon由于我们已经启动,因此手动启动 Avahi 服务。查找错误)
  5. systemctl enable avahi-daemon在启动时启用 Avahi 服务。

我刚刚在 Arch 笔记本电脑上执行了这些步骤,无需重新启动任何其他服务或 WiFi 接口即可让我的其他机器在几秒钟内发现它,并让我的笔记本电脑发现它们的服务。

由于我还无法评论 ggg 的答案,因此我只想在此指出,无需在启动脚本中执行此操作 - 这就是在 systemd 中启用服务的目的。做一次就可以忘记它。

答案2

感谢指向拱门维基Ulrich Dangel 关于 Avahi 的文章,这就是我所做的:

  1. 安装 avahi 和 nss-mdns$ sudo pacman -S avahi nss-mdns
  2. 添加/etc/rc.d/avahi-daemon start到末尾rc.local
  3. 因为我正在跑步dhcpcd,所以/etc/dhcpcd.conf我注释掉了该noipv4ll行。
  4. 我也跑了$ sudo /usr/sbin/avahi-autopid -D wlan0。由于我不喜欢重新启动,所以我不确定步骤 3 是否有必要。
  5. /etc/nsswitch.conf我将行设置为 read hosts: files mdns4_minimal dns mdns4
  6. 然后我跑去$ sudo /etc/rc.d/dbus restart重启dbus。

之后,只要做就行了。ssh [email protected]

答案3

我认为我们不需要avahi-daemon运行来使用.local。这是我的启动脚本中的内容。与 Arch Wiki 的方法相比,这要简单得多。

systemctl enable avahi-daemon
avahi-set-host-name $(hostname)
systemctl disable avahi-daemon

相关内容