2009-09-30 2 views
7

DNS와 관련된 많은 문제, 특히 보안 문제가 UDP를 통해 구현되는 DNS의 근본 원인을 가지고있는 것으로 보입니다. 예를 들어 응답자는 자신이 말하는 사람 일 필요는 없습니다.mDNS (Bonjour, Avahi 등)가 UDP를 사용하는 이유는 무엇입니까?

나는 어쩌면 그것의 응용 프로그램 수준에서 이러한 문제를 돌봐, (나는 DNS보다 훨씬 새로운 가정) mDNS를 프로토콜의 세부 사항을 알고하지 않습니다. 누군가 나를 위해 이것에 대해 밝혀 줄 수 있습니까?

답변

15

'm'는 의미 "멀티 캐스트." mDNS 쿼리는 로컬 서브넷에 대한 일반적인 DNS 쿼리 멀티 캐스트 (일명 브로드 캐스트)입니다. 서브넷의 모든 호스트는 모든 mDNS 쿼리 패킷을 수신하고 해당 호스트 이름에 대해 응답합니다. TCP 브로드 캐스트를 수행 할 수 없으므로 TCP를 통해 mDNS를 구현할 수 없습니다.

여기보다 근본적인 점은 mDNS를 이미 완전히 안전하지 않습니다,하지만이있다. 지적한대로 모든 사용자는 모든 쿼리에 응답 할 수 있으므로 네트워크의 모든 호스트를 거의 신뢰해야합니다. TCP로 전환하면 (가능하다면)이 문제는 해결되지 않습니다.

+0

으로 mDNS는 사용자가이이 문제 (예를 들어 홈 네트워크)가 아닌만큼 서로를 신뢰하는 네트워크에서 사용하도록 설계되어 있습니다. 더 크고 적대적인 네트워크의 경우, 대신에 일반적인 유니 캐스트 DNS (TSIG 인증이 가능할 수 있음)가 사용되어야합니다. 그런 다음 관리자는 클라이언트가 어떤 레코드를 업데이트 할 수있는 정책을 설정할 수 있습니다. – Feuermurmel

+0

또한 'UDP (멀티 캐스트)의 경우 여러 응용 프로그램이 동일한 포트에 가입 할 수 있습니다.'http://stackoverflow.com/a/1694148/239247 –

5

Zeroconf를이 보안과 관련되지 않은; 보안은 위의 계층에서 구현되어야합니다.

TCP는 크게 변하지 않을 것입니다. 이러한 문제는 암호로 해결해야합니다. mDNS를에

관련 문제