Mis programas nativos (en Fedora) pueden resolver nombres mDNS/Avahi/zeroconf, así:
$ 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.
Sin embargo, mis programas instalados en Nix no son:
$ 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
Tengo mDNS configurado en /etc/nsswitch.conf
:
hosts: files myhostname mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns
Y avahi-daemon
se está ejecutando en mi sistema.
¿Cómo puedo hacer que los programas Nix resuelvan correctamente los nombres mDNS? Esto es especialmente importante, porque la implementación con Morph requiere una sesión Nix SSH que funcione.
Respuesta1
El eslabón que falta aquí es nscd
; simplemente instalar nscd
e iniciar el demonio hace que los programas instalados en Nix funcionen.
$ 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