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


18

如果我使用的是Ubuntu或Linux Mint(我尝试过并确定能正常工作的仅有的两种版本),则可以运行以下命令:

wayne@myhost$ ssh wayne@otherhost.local

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

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

如何进行这种自动名称解析(?)?


5
您必须安装avahi以及nss-mdns-更多细节看看在拱维基
乌尔里希Dangel

Answers:


15

韦恩自己的答案现在已经很老了。从那时起,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中启用服务的目的。只做一次,就算了吧。


3
您甚至可以结合步骤4和5 :systemctl enable avahi-daemon --now。它会启动并立即启用服务,而不必等待下次启动。
乔纳森·科玛

11

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

  1. 安装avahi和nss-mdns $ sudo pacman -S avahi nss-mdns
  2. 添加/etc/rc.d/avahi-daemon startrc.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就可以了。


1
关于第二点:您最好在/etc/rc.conf中的DAEMONS行中添加“ avahi-daemon”
Wieland

我曾考虑过这一点,但Wiki指出有些人在rc.conf中启动得太快而失败,结果失败了,将它放在我做的地方是一个解决方法。
韦恩·韦纳

2

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

systemctl enable avahi-daemon
avahi-set-host-name $(hostname)
systemctl disable avahi-daemon
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.