📡
mDNS(멀티캐스트 DNS)란
별도의 DNS 서버 없이도 같은 네트워크 안의 기기들이 서로의 이름과 주소를 찾을 수 있게 해주는 프로토콜입니다.
보통 도메인 이름을 IP 주소로 바꾸려면 인터넷 어딘가의 DNS 서버에 물어봐야 하지만, 집이나 사무실 안의 프린터·스마트TV·스피커 같은 기기는 별도 DNS 서버를 두기 어렵습니다. mDNS는 이런 로컬 네트워크 안에서 "내 이름은 이것이다"라고 멀티캐스트로 알리고, 다른 기기가 필요할 때 같은 방식으로 질의해 응답을 받는 구조로 DNS 서버 없이도 이름 해석을 가능하게 합니다.
🏠
.local 도메인
mDNS로 찾는 기기들은 일반 도메인과 구분하기 위해 ".local"이라는 특별한 최상위 도메인을 사용합니다.
프린터가 "MyPrinter.local"처럼 이름을 알리면, 같은 네트워크의 다른 기기는 이 이름을 인터넷의 일반 도메인이 아니라 mDNS로 해석해야 한다는 것을 자동으로 인식합니다. .local 도메인은 로컬 네트워크 밖에서는 라우팅되지 않도록 예약되어 있어, 실제 인터넷의 도메인 이름 체계와 충돌하지 않습니다.
🔁
동작 원리: 멀티캐스트 질의와 응답
기기가 이름을 찾고 싶을 때 특정 멀티캐스트 주소로 질문을 뿌리면, 그 이름을 가진 기기만 응답을 돌려주는 방식으로 동작합니다.
mDNS는 UDP 5353번 포트와 IPv4 멀티캐스트 주소 224.0.0.251(IPv6에서는 ff02::fb)을 사용합니다. 같은 네트워크에 있는 모든 mDNS 지원 기기가 이 멀티캐스트 그룹을 듣고 있다가, 자신에게 해당하는 이름 질의가 오면 자신의 IP 주소로 응답합니다. 질의를 보낸 기기는 이 응답을 캐시에 저장해두고 재사용하며, 필요하면 주기적으로 정보를 다시 확인합니다.
🔍
DNS-SD: 서비스 자체를 찾아주는 기능
mDNS와 짝을 이루는 DNS-SD(DNS 서비스 디스커버리)는 "이 이름을 가진 기기가 어디 있나"를 넘어 "이런 종류의 서비스를 제공하는 기기가 있나"까지 찾아줍니다.
예를 들어 "_ipp._tcp.local"처럼 서비스 종류를 나타내는 이름으로 질의하면, 네트워크 안의 모든 프린터가 응답하면서 자신의 이름과 포트, 부가 정보를 함께 알려줍니다. 이 덕분에 사용자가 프린터의 정확한 이름이나 IP 주소를 몰라도, 앱이나 운영체제가 자동으로 "사용 가능한 프린터 목록"을 보여줄 수 있습니다.
📺
실생활 활용 사례
에어플레이, 화면 미러링, 무선 프린터 자동 검색, 스마트홈 기기 초기 설정 등 "기기를 자동으로 찾아주는" 거의 모든 기능 뒤에 mDNS가 있습니다.
아이폰이 근처의 애플TV를 자동으로 찾아 에어플레이 목록에 띄우거나, 프린터 드라이버 설치 없이도 네트워크 프린터가 목록에 바로 나타나는 것, 스마트홈 앱이 새로 연결한 기기를 자동으로 발견하는 것 모두 mDNS와 DNS-SD 조합이 뒤에서 동작하기 때문입니다. 애플의 구현체는 Bonjour, 리눅스 계열에서는 Avahi라는 이름으로 널리 쓰입니다.
🧩
대표 구현체: Bonjour, Avahi, Zeroconf
mDNS/DNS-SD 표준을 실제로 구현한 소프트웨어를 통틀어 Zeroconf(제로컨피그)라고도 부르며, 애플의 Bonjour와 리눅스의 Avahi가 대표적입니다.
Zeroconf라는 이름은 "설정(configuration) 없이도 네트워크 기능이 동작한다"는 목표에서 왔습니다. 애플은 이 개념을 Bonjour라는 이름으로 macOS와 iOS 전반에 내장했고, 오픈소스 진영에서는 Avahi가 리눅스 배포판에서 같은 역할을 합니다. 윈도우에서도 iTunes나 여러 프린터 드라이버를 설치하면 Bonjour 서비스가 함께 설치되어 동작하는 경우가 많습니다.
⚠️
보안·주의사항
mDNS는 인증 없이 누구나 응답할 수 있는 구조라, 같은 네트워크 안에 있다면 신뢰할 수 없는 기기도 이름 정보를 조작해 응답할 수 있는 위험이 있습니다.
카페나 공항 같은 공용 와이파이에서는 낯선 사람이 같은 네트워크에 있을 수 있으므로, mDNS로 내 기기 이름이나 서비스 정보가 주변에 노출될 수 있다는 점을 유의해야 합니다. 또한 mDNS는 원래 로컬 네트워크 안에서만 동작하도록 설계되었기 때문에, 라우터를 넘어 다른 네트워크 대역까지 전달되지 않는 것이 정상이며 이를 넘기려면 별도의 mDNS 리플렉터 설정이 필요합니다.