Pourquoi les machines Windows peuvent-elles résoudre les noms locaux alors que Linux ne le peut pas ?

J’ai un petit réseau avec des machines Windows et Linux connectées à un routeur D-Link DIR-825.

Les machines Windows du réseau peuvent atteindre toutes les autres machines par leur nom, tandis que les machines Linux ne peuvent atteindre les autres machines que par adresse IP.

Je peux voir toutes les machines listées avec leurs noms et leurs adresses DHCP attribuées dans la liste d’état des clients DHCP de l’interface d’administration web du routeur.

Pourquoi les machines Linux ne peuvent-elles pas trouver d’autres machines par leur nom alors que Windows n’a aucun problème à trouver les machines Linux ?

Mes conclusions actuelles sont les suivantes :

Windows utilise les noms NetBIOS, et ce protocole, étant un protocole de diffusion, leur permet de se trouver mutuellement sans aucun serveur central.

Les machines Linux dans les distributions modernes utilisent nativement un protocole appelé Avahi, qui est également un protocole de diffusion indépendant de tout serveur. Les machines du réseau local ont un suffixe .local, vous pouvez donc pinguer de Linux à Linux en utilisant ping hostname.local, ou les voir avec le paquet avahi-discover. Certaines applications dans Gnome utilisent Avahi pour lister les machines du réseau (par exemple, le visionneur de bureau à distance).

L’installation de Samba sur une machine Linux lui attribuera un nom NetBIOS (ou, plus techniquement, fera en sorte qu’une machine Linux s’annonce dans les requêtes de diffusion avec son nom NetBIOS, qui est par défaut son nom d’hôte), et cela permet aux machines Windows de trouver les machines Linux.

Piège : bien que les machines Linux avec Samba répondent aux requêtes du protocole NetBIOS, avec les paramètres par défaut dans les distributions comme Ubuntu, elles n’utiliseront pas NetBIOS comme méthode pour résoudre les noms, et c’est pourquoi les machines Linux ne peuvent pas « voir » les autres machines Linux ou Windows. Pour cela, vous devez modifier le fichier /etc/nsswitch.conf et ajouter wins à la liste dans cette ligne :
`hosts: files mdns4_minimal [NOTFOUND=return] dns wins mdns4


-

Vous *pourriez* avoir besoin d'installer le paquet `winbind` (et, s'il n'est pas installé automatiquement, `libnss-winbind`) pour que ce qui précède fonctionne.

-

Donc, pour le problème de visibilité, vous installez soit Samba sur toutes les machines Linux (et modifiez également `/etc/nsswitch.conf` pour activer la résolution de noms NetBIOS), soit vous installez le support Avahi sur les machines Windows.

-

Quant au partage de fichiers, Samba fournit aux machines Linux des capacités de partage de fichiers avec Windows. Il n'est pas nécessaire de modifier /etc/nsswitch.conf pour que les machines Linux voient les dossiers partagés les unes des autres et de Windows (et vice-versa) dans la section « Réseau » de Nautilus.