為什麼 Nix 程式無法解析 mDNS 名稱,而本機程式卻可以?

為什麼 Nix 程式無法解析 mDNS 名稱,而本機程式卻可以?

我的本機程式(在 Fedora 上)能夠解析 mDNS / Avahi / Zeroconf 名稱,如下所示:

$ ping felonyspork.local -c 1  
PING felonyspork.local (192.168.88.169) 56(84) bytes of data.
64 bytes from 192.168.88.169 (192.168.88.169): icmp_seq=1 ttl=64 time=1.73 ms

--- felonyspork.local ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.734/1.734/1.734/0.000 ms

$ ssh felonyspork.local        
Last login: Mon Apr 25 16:05:34 2022 from 192.168.88.200

$ exit
Connection to felonyspork.local closed.

但是,我的 Nix 安裝的程式不是:

$ nix-shell -p openssh ssh-tools

[nix-shell:~/src/nixconfig]$ ssh-ping -c 1 felonyspork.local
SSHPING felonyspork.local

--- felonyspork.local ping statistics ---
1 requests transmitted, 0 requests received, 100% request loss

[nix-shell:~/src/nixconfig]$ ssh felonyspork.local
ssh: Could not resolve hostname felonyspork.local: Name or service not known

我在以下位置配置了 mDNS /etc/nsswitch.conf

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

並且avahi-daemon正在我的系統上運行。

如何讓 Nix 程式正確解析 mDNS 名稱?這一點尤其重要,因為使用 Morph 進行部署需要有效的 Nix SSH 會話。

答案1

這裡缺少的鏈接是nscd;只需安裝nscd並啟動守護程序即可使 Nix 安裝的程式運作。

$ sudo dnf install nscd
$ sudo systemctl start nscd.service
$ nix-shell -p ssh-tools

[nix-shell:~]$ ssh-ping felonyspork.local
SSHPING felonyspork.local
Pong from felonyspork.local: ssh_seq=1 time=2191 ms
Pong from felonyspork.local: ssh_seq=2 time=1310 ms
^C
--- felonyspork.local ping statistics ---
2 requests transmitted, 2 requests received, 0% request loss

相關內容