¿Cómo uso nombres de host .local con Arch Linux?

18

Si estoy usando Ubuntu o Linux Mint (los únicos dos sabores que he probado y sé que funcionan con seguridad), puedo ejecutar algo como esto:

wayne@myhost$ ssh [email protected]

Y el nombre se resuelve automáticamente a cualquiera que sea la IP de otro host en mi red local.

Decidí comenzar a ramificarme en otras distribuciones, y tengo Arch ejecutándose en mi computadora portátil, pero si intento usar el comando anterior obtengo Could not resolve hostname otherhost.local: Name or service not known

¿Qué se necesita para lograr este tipo de resolución automática de nombres (?)?

Wayne Werner
fuente
55
Tienes que instalar avahi, así como nss-mdns- para más detalles echa un vistazo a la wiki
Ulrich Dangel

Respuestas:

15

La propia respuesta de Wayne ya es bastante antigua. Arch ha cambiado a usar systemd en lugar de guiones de inicio. La página Avahi de Arch wiki se ha actualizado y contiene detalles sobre por qué se necesitan los siguientes pasos. En resumen: Avahi es una herramienta zeroconf, lo que significa que no necesita ninguna configuración para funcionar una vez instalada en todas las máquinas de su LAN, pero debe configurar el resto de su software para que realmente solicite la información a Avahi.

Ejecútelos como root, o anteponga sudodonde corresponda, en un terminal y reemplácelos nanocon el editor que elija.

  1. pacman -S avahi nss-mdns Instala el demonio de servicios Avahi y el solucionador DNS de multidifusión.
  2. nano /etc/nsswitch.conf Este archivo le dice a la biblioteca C cómo obtener información del servicio de nombres.
  3. Cambie la línea hosts: files dns myhostnamea hosts: files mdns_minimal [NOTFOUND=return] dns myhostname, guardar y salir.
  4. systemctl start avahi-daemon Inicia el servicio de Avahi manualmente ya que ya hemos arrancado. Busque errores)
  5. systemctl enable avahi-daemon Habilita el servicio Avahi en el arranque.

Acabo de realizar estos pasos en una computadora portátil Arch y no había necesidad de reiniciar ningún otro servicio o la interfaz wifi para que mis otras máquinas lo descubrieran en unos segundos, y que mi computadora portátil descubriera sus servicios.

Dado que todavía no puedo comentar sobre la respuesta de ggg, me gustaría señalar aquí que no hay necesidad de hacer esto en un script de inicio, para eso está habilitado el servicio en systemd. Hazlo una vez y olvídalo.

TwoD
fuente
3
Incluso puede combinar los pasos 4 y 5: systemctl enable avahi-daemon --now. Se inicia y habilita el servicio inmediatamente en lugar de esperar el próximo inicio.
Jonathan Komar
11

Gracias al puntero al artículo de Arch Wiki sobre Avahi de Ulrich Dangel, esto es lo que hice:

  1. Instalar avahi y nss-mdns $ sudo pacman -S avahi nss-mdns
  2. Agregar /etc/rc.d/avahi-daemon startal final derc.local
  3. Como estoy corriendo dhcpcd, /etc/dhcpcd.confcomenté la noipv4lllínea.
  4. Yo también corrí $ sudo /usr/sbin/avahi-autopid -D wlan0. Como no me gusta reiniciar, no estoy seguro si el paso 3 fue necesario.
  5. En /etc/nsswitch.confme puse la línea para leer hosts: files mdns4_minimal dns mdns4.
  6. Luego corrí $ sudo /etc/rc.d/dbus restartpara reiniciar dbus.

Después de eso, simplemente hacer ssh [email protected]simplemente funcionó.

Wayne Werner
fuente
1
Con respecto a su segundo punto: También podría agregar "avahi-daemon" a la línea DAEMONS en /etc/rc.conf
Wieland
Pensé en eso, pero el wiki indicaba que algunas personas tenían problemas al comenzar demasiado rápido en rc.conf y fallar como resultado, y que colocarlo donde lo hice fue una solución.
Wayne Werner
2

No creo que necesitemos avahi-daemoncorrer para usar .local. Esto es lo que tengo para mi script de inicio. Esto es mucho más simple en comparación con el método de Arch Wiki.

systemctl enable avahi-daemon
avahi-set-host-name $(hostname)
systemctl disable avahi-daemon
ggg
fuente