设想

设想

设想

我想使用一种相对轻量级的方式将 IP 地址与主机名关联起来。

为此,我在 Fedora 发行版上安装了 Avahi 和 mdns/nss。

我喜欢使用伪顶级域名“.o”作为本地域,而不是默认的“.local”。

/etc/nsswitch.conf已经确定已mdns4设置:

hosts:      files myhostname mdns4 [NOTFOUND=return] resolve [!UNAVAIL=return] dns

/etc/avahi/avahi-daemon.conf我改变了一行并保持一切不变:

domain-name=o

由于我的主机名是,desk这应该使域desk.o可用。无论如何,这是我的理解。

最后,在 中/etc/avahi/hosts,我设置了一个 IP-主机名关系:

192.168.0.1 router.o

预期行为

假设我的机器名称是desk,我希望该域desk.o可用。此外,我的网络中有一些机器,无法在其上运行自己的 Avahi,因此我会用来/etc/avahi/hosts公布这些 IP 地址等。原因之一是,我有一台相当旧的网络打印机,它根本无法运行t 运行 Avahi,我只需要使用 IP 或类似 Avahi 的东西(或者只是 中的一个条目/etc/hosts)。

因此,对于hosts上面的文件,我希望router.o解析为 192.168.0.1 等。

观察到的行为

进行任何更改后,我重新启动了 Avahi ( systemctl restart avahi-daemon.service),但工作方式有点奇怪:

运行时getent hosts desk.local我得到这个:

2a02:xxxx:xxxx:xxxx:xxxx:xxxx:8878:583d desk.local
fe80::f990:519a:4ba5:9f22 desk.local

(第一个 IP 部分混淆。其中有 的地方x,只有十六进制数字)

我对此很满意(大部分),我不希望desk.local仍然可用,但我假设这是某种我无法摆脱的默认设置(目前)。

运行时getent hosts desk.o我得到:

127.0.0.1       desk.o

这很好,只要它只在这台机器上,但对我来说有点奇怪,FQDN 主机名解析为这个。

跑步时getent hosts router.o我什么也得不到。就是没有输出。

问题

那么,显然 Avahi 忽略了/etc/avahi/hosts?更改该文件后我重新启动了 Avahi,因此我假设它会被重新读取。

Avahi 没有将设置的主机名“发布”给自己吗?

如何使 Avahi 和我的系统按照我的预期运行?或者我在这里有一个基本的思维错误?


理想情况下,Avahi-hostname 文件应该位于 my 中的某个位置$HOME,这样我就不必为 Avahi 调整系统范围的主机名文件(如果有意义的话)。如果这不起作用,那也没关系,因为我认为这违背了主机名解析原则上的工作方式。

让我有点惊讶的是,这个问题desk.o正在得到解决(实际上并不像我预期的那样),但至少它解决了某物所以它至少部分有效。

相关内容