设想
我想使用一种相对轻量级的方式将 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
正在得到解决(实际上并不像我预期的那样),但至少它解决了某物所以它至少部分有效。