2009-09-30 2 views
7

Мне кажется, что многие проблемы с DNS, особенно проблемы с безопасностью, имеют первопричину DNS, реализуемой над UDP; например, ответчик не должен быть тем, кем он себя говорит.Почему mDNS (Bonjour, Avahi и т. Д.) Использует UDP?

Я не знаю подробностей протокола mDNS (который, как я предполагаю, намного выше, чем DNS), возможно, он заботится об этих проблемах на своем уровне приложения. Может ли кто-нибудь пролить свет на это для меня?

ответ

15

«m» в mDNS означает «многоадресная рассылка». Запрос mDNS представляет собой обычную многоадресную рассылку DNS-запросов (она же широковещательная) в локальную подсеть. Каждый узел в подсети получает все пакеты запросов mDNS и отвечает на те, которые указаны для имени своего хоста. Поскольку невозможно транслировать TCP, вы не сможете реализовать mDNS через TCP.

Здесь есть более фундаментальный момент, поскольку mDNS уже полностью небезопасен. Как вы заметили, любой может ответить на любой запрос, поэтому вам в значительной степени нужно доверять всем хостам в сети. Переключение на TCP (если можно) не решило бы эту проблему.

+0

mDNS предназначен для использования в сети, где пользователи доверяют друг другу настолько, что это не проблема (например, домашняя сеть). Для большей, более враждебной сети вместо этого следует использовать обычный одноадресный DNS (возможно, с аутентификацией TSIG). Затем администратор может настроить политики, по которым клиенты могут обновлять записи. – Feuermurmel

+0

Кроме того, «Для UDP (многоадресных рассылок) несколько приложений могут подписаться на один и тот же порт». Http://stackoverflow.com/a/1694148/239247 –

5

Zeroconf не имеет отношения к безопасности; безопасность должна быть реализована в слое выше.

TCP не изменится. Эти проблемы должны решаться криптографически.

Смежные вопросы