2009-09-30 33 views
7

Dường như với tôi rằng rất nhiều vấn đề với DNS, đặc biệt là vấn đề bảo mật, có nguyên nhân gốc rễ của DNS đang được triển khai trên UDP; ví dụ, người trả lời không nhất thiết phải là người mà anh ta nói.Tại sao mDNS (Bonjour, Avahi, vv) sử dụng UDP?

Tôi không biết chi tiết về giao thức mDNS (mà tôi giả định là mới hơn DNS nhiều), có thể nó sẽ xử lý các vấn đề này ở cấp ứng dụng của nó. Ai đó có thể làm sáng tỏ vấn đề này giúp tôi không?

Trả lời

15

'm' trong mDNS là viết tắt của "multicast". Một truy vấn mDNS là khá nhiều một truy vấn DNS multicast thông thường (hay còn gọi là broadcast) tới subnet cục bộ. Mỗi máy chủ trên mạng con nhận tất cả các gói truy vấn mDNS và trả lời các gói cho tên máy chủ của chúng. Vì không thể thực hiện phát sóng TCP, bạn không thể triển khai mDNS qua TCP.

Có một điểm cơ bản hơn ở đây mặc dù, mDNS đã hoàn toàn không an toàn. Như bạn đã chỉ ra, bất kỳ ai cũng có thể trả lời bất kỳ truy vấn nào, do đó bạn phải tin tưởng tất cả các máy chủ trên mạng. Chuyển sang TCP (nếu bạn có thể) sẽ không khắc phục được sự cố này.

+0

mDNS được thiết kế để sử dụng trên mạng nơi người dùng tin tưởng lẫn nhau đủ để đây không phải là mối quan ngại (ví dụ: mạng gia đình). Đối với một mạng lớn hơn, thù địch hơn, DNS unicast thông thường (có thể với TSIG authentcation) nên được sử dụng thay thế. Sau đó, quản trị viên có thể thiết lập các chính sách mà khách hàng có thể cập nhật bản ghi nào. – Feuermurmel

+0

Ngoài ra, 'Đối với UDP (Multicasts), nhiều ứng dụng có thể đăng ký vào cùng một cổng.' http://stackoverflow.com/a/1694148/239247 –

5

Zeroconf không quan tâm đến bảo mật; bảo mật nên được thực hiện trong lớp trên.

TCP sẽ không thay đổi nhiều. Những vấn đề này phải được giải mã bằng mật mã.

Các vấn đề liên quan