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

Way*_*ner 18 networking arch-linux hostname

如果我使用的是 Ubuntu 或 Linux Mint(我尝试过并且知道肯定有效的仅有的两种版本),我可以运行这样的程序:

wayne@myhost$ ssh wayne@otherhost.local
Run Code Online (Sandbox Code Playgroud)

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

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

获得这种自动名称解析(?)需要什么?

小智 17

韦恩自己的答案现在已经很老了。Arch 已经改用 systemd 而不是 init 脚本。Arch wiki 的Avahi页面已更新,其中包含有关为什么需要以下步骤的详细信息。简而言之:Avahi 是一个 zeroconf 工具,这意味着一旦安装在 LAN 的所有机器上,它本身不需要配置即可工作,但您必须配置软件的其余部分,以便它实际向 Avahi 询问信息。

以 root 身份运行这些,或者sudo在适当的地方在终端中添加前缀并替换nano为您选择的编辑器。

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

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

由于我还不能对 ggg 的回答发表评论,我只想在这里指出,没有必要在启动脚本中执行此操作——这就是在 systemd 中启用服务的目的。做一次就忘掉它。

  • 你甚至可以结合第 4 步和第 5 步:`systemctl enable avahi-daemon --now`。它立即启动并启用服务,而不是等待下一次启动。 (3认同)

Way*_*ner 11

感谢Ulrich Dangel 关于 Avahi的Arch Wiki文章的指针,这就是我所做的:

  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 wayne@other.local就行了。