Comment utiliser les noms d'hôte .local avec Arch Linux?

18

Si j'utilise Ubuntu ou Linux Mint (les deux seules versions que j'ai essayées et que je connais fonctionnent à coup sûr), je peux exécuter quelque chose comme ceci:

wayne@myhost$ ssh [email protected]

Et le nom est résolu automatiquement par quelle que soit l'IP d'un autre hôte sur mon réseau local.

J'ai décidé de commencer à me diversifier dans d'autres distributions, et j'ai Arch en cours d'exécution sur mon ordinateur portable - mais si j'essaie d'utiliser la commande précédente, j'obtiens Could not resolve hostname otherhost.local: Name or service not known

Que faut-il pour que ce type de résolution de nom automatique (?) Ait lieu?

Wayne Werner
la source
5
Vous devez installer avahiainsi que nss-mdns- pour plus de détails, jetez un œil au wiki de
Ulrich Dangel

Réponses:

15

La propre réponse de Wayne est maintenant assez ancienne. Arch est depuis passé à l'utilisation de systemd au lieu de scripts init. La page Avahi du wiki Arch a été mise à jour et contient des détails sur la raison pour laquelle les étapes ci-dessous sont nécessaires. En bref: Avahi est un outil zeroconf, ce qui signifie qu'il n'a pas besoin de configuration pour fonctionner une fois installé sur toutes les machines de votre réseau local, mais vous devez configurer le reste de votre logiciel afin qu'il demande à Avahi les informations.

Exécutez-les en tant que root, ou ajoutez-les le sudocas échéant dans un terminal et remplacez-les nanopar l'éditeur de votre choix.

  1. pacman -S avahi nss-mdns Installe le démon des services Avahi et le résolveur DNS multidiffusion.
  2. nano /etc/nsswitch.conf Ce fichier indique à la bibliothèque C comment obtenir des informations sur le service de noms.
  3. Changez la ligne hosts: files dns myhostnameen hosts: files mdns_minimal [NOTFOUND=return] dns myhostname, enregistrez et quittez.
  4. systemctl start avahi-daemon Démarre le service Avahi manuellement car nous sommes déjà démarrés. Recherchez les erreurs)
  5. systemctl enable avahi-daemon Active le service Avahi au démarrage.

Je viens d'effectuer ces étapes sur un ordinateur portable Arch et il n'était pas nécessaire de redémarrer d'autres services ou l'interface wifi pour que mes autres machines le découvrent en quelques secondes et que mon ordinateur portable découvre leurs services.

Comme je ne peux pas encore commenter la réponse de ggg, je voudrais simplement souligner ici qu'il n'est pas nécessaire de le faire dans un script de démarrage - c'est à cela que sert l'activation du service dans systemd. Faites-le une fois et oubliez-le.

TwoD
la source
3
Vous pouvez même combiner les étapes 4 et 5: systemctl enable avahi-daemon --now. Il démarre et active le service immédiatement au lieu d'attendre le prochain démarrage.
Jonathan Komar
11

Grâce au pointeur vers l' article Arch Wiki sur Avahi d'Ulrich Dangel, voici ce que j'ai fait:

  1. Installer avahi et nss-mdns $ sudo pacman -S avahi nss-mdns
  2. Ajouter /etc/rc.d/avahi-daemon startà la fin derc.local
  3. Depuis que je cours dhcpcd, /etc/dhcpcd.confj'ai commenté la noipv4llligne.
  4. J'ai aussi couru $ sudo /usr/sbin/avahi-autopid -D wlan0. Comme je n'aime pas redémarrer, je ne sais pas si l'étape 3 était nécessaire.
  5. Dans /etc/nsswitch.confj'ai mis la ligne à lire hosts: files mdns4_minimal dns mdns4.
  6. Ensuite, j'ai couru $ sudo /etc/rc.d/dbus restartpour redémarrer dbus.

Après cela, faire ssh [email protected]simplement a fonctionné.

Wayne Werner
la source
1
Concernant votre deuxième point: vous pourriez tout aussi bien ajouter "avahi-daemon" à la ligne DAEMONS dans /etc/rc.conf
Wieland
J'y ai pensé, mais le wiki a indiqué que certaines personnes avaient des problèmes avec son démarrage trop rapide dans rc.conf et échouant en conséquence, et que le placer où je l'ai fait était un correctif.
Wayne Werner
2

Je ne pense pas que nous ayons besoin de avahi-daemoncourir pour l'utiliser .local. Voici ce que j'ai pour mon script de démarrage. C'est beaucoup plus simple que la méthode d'Arch Wiki.

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