2009-09-30 20 views
7

Mi sembra che molti dei problemi con il DNS, in particolare i problemi di sicurezza, abbiano la causa principale del DNS implementato su UDP; per esempio il rispondente non deve essere chi dice di essere.Perché mDNS (Bonjour, Avahi, ecc.) Usa UDP?

Non conosco i dettagli del protocollo mDNS (che presumo sia molto più recente di DNS), forse si occupa di questi problemi a livello di applicazione. Qualcuno può far luce su questo per me?

risposta

15

La 'm' in mDNS sta per "multicast". Una query mDNS è praticamente una normale query DNS multicast (alias broadcast) alla subnet locale. Ogni host nella subnet riceve tutti i pacchetti di query mDNS e risponde a quelli del proprio nome host. Poiché non è possibile eseguire una trasmissione TCP, non è possibile implementare mDNS su TCP.

C'è un altro punto fondamentale qui, però, mDNS è già completamente insicuro. Come fai notare, chiunque può rispondere a qualsiasi query, quindi ti devi fidare di tutti gli host della rete. Passare a TCP (se possibile) non risolverebbe questo problema.

+0

mDNS è progettato per essere utilizzato su una rete in cui gli utenti si fidano l'un l'altro abbastanza che questo non sia un problema (ad esempio una rete domestica). Per una rete più grande e più ostile, dovrebbe essere usato un normale DNS unicast (possibilmente con autenticazione TSIG). Quindi, un amministratore può impostare politiche a cui i clienti possono aggiornare i record. – Feuermurmel

+0

Inoltre, 'Per UDP (Multicasts), più applicazioni possono iscriversi alla stessa porta. Http://stackoverflow.com/a/1694148/239247 –

5

Zeroconf non si occupa di sicurezza; la sicurezza dovrebbe essere implementata nel livello sopra.

TCP non cambierà molto. Questi problemi devono essere risolti crittograficamente.