2009-09-30 16 views
7

Il me semble que beaucoup de problèmes avec DNS, en particulier les problèmes de sécurité, ont la cause première du DNS implémenté sur UDP; par exemple, le répondant n'a pas à être celui qu'il dit être.Pourquoi mDNS (Bonjour, Avahi, etc.) utilise-t-il UDP?

Je ne connais pas les détails du protocole mDNS (que je suppose est beaucoup plus récent que DNS), peut-être qu'il prend soin de ces problèmes dans son niveau d'application. Quelqu'un peut-il faire la lumière sur ce pour moi?

Répondre

15

Le 'm' dans mDNS signifie "multicast". Une requête mDNS est à peu près une requête DNS régulière multicast (aka broadcast) vers le sous-réseau local. Chaque hôte du sous-réseau reçoit tous les paquets de requête mDNS et répond à ceux de leur nom d'hôte. Comme il n'est pas possible de faire une diffusion TCP, vous ne pouvez pas implémenter mDNS sur TCP.

Il y a un point plus fondamental ici, mDNS est déjà complètement non sécurisé. Comme vous le signalez, n'importe qui peut répondre à n'importe quelle requête, vous devez donc faire confiance à tous les hôtes du réseau. Passer à TCP (si vous le pouvez) ne résoudrait pas ce problème.

+0

mDNS est conçu pour être utilisé sur un réseau où les utilisateurs se font suffisamment confiance pour que cela ne soit pas un problème (par exemple, un réseau domestique). Pour un réseau plus grand et plus hostile, un DNS unicast normal (avec éventuellement une authentification TSIG) devrait être utilisé à la place. Ensuite, un administrateur peut définir des stratégies auxquelles les clients peuvent mettre à jour les enregistrements. – Feuermurmel

+0

En outre, 'Pour UDP (Multicasts), plusieurs applications peuvent s'abonner au même port. Http://stackoverflow.com/a/1694148/239247 –

5

Zeroconf n'est pas concerné par la sécurité; la sécurité devrait être implémentée dans la couche ci-dessus.

TCP ne changerait pas beaucoup. Ces problèmes doivent être résolus de manière cryptographique.