web-dev-qa-db-fra.com

Qu'est-ce que mDNS? Est-il possible de créer une requête mDNS sans que le service mdns soit en cours d'exécution?

Je suis récemment tombé sur avahi-daemon et mdns....

Ai-je besoin d'un client mDNS de mon système pour se connecter au serveur mDNS?

Ou existe-t-il un autre moyen de connecter un ordinateur sans client mDNS à un ordinateur serveur mDNS (hostname.local)?

Est-il possible de faire un ping à partir de l'ordinateur sans mDNS service en cours d'exécution.

4
Abhi balachandra

1. Qu'est-ce que mDNS?

Pour avoir une vue d'ensemble, vous devez regarder quelque chose qui s'appelle Zeroconf . Les concepts Zeroconf ont été mis en œuvre d’abord et intégralement par Apple, mais Apple utilise le nom marketing Bonjour (initialement Rendezvous ) pour ça. mDNS ( DNS multicast ) en fait partie - voir ci-dessous.

Apple utilise Bonjour pour ...

  • ... AirPrint (lorsque les clients mobiles iOS recherchent une imprimante disponible sur le réseau local qu'ils peuvent utiliser pour "l'impression sans pilote"), ou pour

  • ... les partages d’imprimantes CUPS à publier sur le réseau local, ou pour

  • ... Partage de la bibliothèque musicale iTunes sur le réseau local, et pour

  • ... de nombreux autres services qui devraient fonctionner sans un serveur DNS central à installer, configurer et maintenir.

Sous Linux, ces mêmes concepts ont été mis en œuvre par le projet Avahi.

Bonjour/Zeroconf a 3 objectifs principaux:

  1. Attribuez des adresses IP sans serveur DHCP.
  2. Traduire entre les noms d'hôte et les adresses IP sans serveur DNS.
  3. Découvrez des services (tels que des fournisseurs d'impression) sans serveur d'annuaire tel que LDAP et simplifiez leur utilisation.

Les concepts techniques complets de Zeroconf sont spécifiés dans une série de RFC, principalement:

  • IPv4LL /rfc3927 pour l'attribution d'adresses IP Link-Local sans serveur DHCP.
  • mDNS /rfc6762 pour DNS multidiffusion pour résoudre les noms d'hôte sans DNS central serveur.
  • DNS-SD /rfc676 pour la découverte de service basée sur DNS sans serveur de répertoire central.

Stuart Cheshire était l’un des principaux architectes de Zeroconf. Après avoir écrit ses réflexions sur la manière de mettre en œuvre la simplicité d’utilisation d’Apple , le protocole de liaison de noms AppleTalk sur un réseau TCP/IP, Stuart a été embauché par Apple pour l'aider à mettre en œuvre. le concept Zeroconf pour les appareils Mac. Il était ensuite également l’auteur principal des documents RFC liés susmentionnés.

L'implémentation Bonjour d'Apple est également disponible pour Windows et Linux (bien que sous Linux, une implémentation indépendante nommée Avahi ) soit également Open Source sous la licence Apache v2.0.

IANA exécute un noms de services et registre de ports , dans lequel les développeurs qui souhaitent définir et développer de nouveaux types de services pour leurs systèmes peuvent réserver et enregistrer leurs noms.

2. Est-il possible de créer une requête mDNS sans qu'un service mdns soit en cours d'exécution?

Oui, ça l'est.

Il suffit de courir

avahi-browse -a

pour obtenir une liste actualisée des annonces de service de tous les nœuds de votre réseau local et des services qu’ils offrent. Une sortie plus détaillée est listée par

avahi-browse -v -a -t

Le -t ici met également fin à la commande automatiquement (et ne met pas à jour automatiquement la liste) une fois que tous les services actuellement actifs ont été découverts.

Vous pouvez rechercher des imprimantes compatibles IPP ( Internet Printing Protocol ) comme ceci:

avahi-browse  _ipp._tcp  -r -t

Le -r "résoudra" les services trouvés et leur montrera un nom lisible par l'homme. _ipp._tcp est l'encodage de noms (étrange) des services auxquels vous devez vous habituer si vous étudiez ce sujet plus en détail. Dans ce cas, il s'agit de la syntaxe précise à utiliser pour les services IPP dans le réseau local. Exemple de sortie pour la commande ci-dessus:

 + wlan1 IPv4 Officejet 6500 [F051B9] Imprimante Internet locale 
 = wlan1 IPv4 Officejet 6500 [F051B9] Imprimante Internet locale 
 nom_hôte = [HPA0B3CCF051B9.local] 
 adresse = [192.168.78.24] 
 Port = [631] 
 Txt = ["Scan = T" "Duplex = F" "Couleur = T" "UUID = 1c852a4d-b800-1f08-abcd- a0b3ccf051b9 "" note = "" adminurl = http: //HPA0B3CCF051B9.local. " "mac = a0: b3: cc: f0: 51: b9" "priorité = 30" "usb_MDL = Officejet 6600" "usb_MFG = HP" "produit = (HP Officejet 6600)" "ty = Officejet 6600" "URF = CP1 , MT1-2-8-9-10-11, OB9, OFU0, PQ3-4-5, RS300-600, SRGB24, W8, DEVW8, DEVRGB24-48, ADOBERGB24-48, IS1 "" rp = ipp/printer " "pdl = application/vnd.hp-PCL, image/jpeg, application/PCLm, image/urf" "qtotal = 1" "txtvers = 1"] 

Vous pouvez également rechercher des services dans un domaine différent, ce qui les expose à Internet. Un exemple de domaine dans lequel vous pouvez réussir (la plupart du temps) est dns-sd.org :

  avahi-browse --domain=dns-sd.org -a -v -r

J'ai copié une partie de cette réponse de les informations de balise Bonjour sur AskDifferent . Cependant, la plupart de cet article d’informations sur les balises a de toute façon été écrit par moi, alors je ne me sens pas du tout mal à l’aise ....

5
Kurt Pfeifle