Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
mdnsd(8)		FreeBSD	System Manager's Manual		      mdnsd(8)

     mdnsd -- Multicast	DNS/DNS-SD daemon

     mdnsd [-dvw] ifname [ifnames ...]

     mdnsd is a	Multicast Domain Name System (MDNS) daemon which acts as the
     host mdns querier and responder.  mdnsd supports both raw MDNS as well as
     DNS-SD (Service Discovery)	as described in	the MDNS and DNS-SD drafts.

     MDNS is a way to perform DNS-like operations via multicast	in the local
     link, there is no hierarchy or multiple domains as	in conventional	uni-
     cast DNS. MDNS provides a way for hosts to	co-operate and maintain	a
     cache name	database which can then	be used	to resolve local host names
     without the need of a central DNS server.

     DNS-SD is a convention on some names used in MDNS to provide hosts	with
     Service Discovery capabilities.

     A host can	publish	a service of any type, be it a HTTP server, NTP
     server, a Printer and so on, this services	can then be browsed and	re-
     solved by the other hosts in the local network.

     There are basically two roles in a	MDNS environment, the Querier, and the

     The Querier is the	entity responsible for sending questions and MDNS re-
     quests in the local link, it can't	be done	as it is in libc, where	each
     process does its own lookup, there	must be	something centralizing all the
     requests as there are various complications implied: cache, timers	and so

     The Responder is the entity responsible for answering those queries,
     there should be only one responder	per host. Both roles are performed by

     MDNS operates on the All-Link-Local Multicast address under
     UDP port 5353. There are no multiple domains in MDNS as in	unicast	DNS,
     the .local	domain name is the single MDNS domain name and it's where all
     the queries and answers take place.

     There are three basic types of MDNS question, in which mdnsd uses two of

     The One-Shot Query, which resembles unicast DNS, where a single question
     is	sent and an answer is expected,	if no answer is	received it means no
     one can answer that question. This	question is used for simple lookups.

     Continuous	Multicast Query	is a more complex way of querying, the querier
     will send the same	question multiple times, doubling the interval between
     each time,
      multiple answers may be received,	it's used as a way for monitoring the
     Resource Records of the network. This question is mainly used by network
     browsing in DNS-SD, where a question for a	type of	service	may enumerate
     one or more instances, for	example, if browsing for the HTTP servers,
     there may be one or more servers (instances).

     To	diminish the volume of redundant answers, a feature called Known An-
     swer Suppression is present, in which the querier when performing a Con-
     tinuous Multicast Query places all	the previous known answers in the ad-
     ditional section of the MDNS packet, thus,	any answer that	would be given
     which is already in the additional	section, is suppressed.

     There are two type	of Resource Records, Unique and	Shared.

     Unique records are	the ones which there may be only one answer for	it in
     the local name, the A, PTR	and HINFO under	the hostname.local name	are
     examples of Unique	records, it would be strange if	two hosts would	answer
     an	address	for the	same foobar.local. All Unique records must be Probed
     to	verify its uniqueness, if a conflict is	found, another name must be
     chosen (Unimplemented).

     A Shared record is	used for PTR records in	DNS-SD,	a host may have	as
     many answers as necessary for a shared record, it's used only in network
     browsing, where there may be multiple instances of	the same service.  To
     access the	MDNS services, a libmdns library will be provided in the near
     future, programs will then, be able to link with libmdns and publish its
     own services though MDNS. By now, only mdnsctl(8) is provided which is a
     command line interface to the daemon in the same fashion as ripctl(8) and

     When mdnsd	starts up, it probes for its hostname (fetched from /etc/my-
     name), if there isn't a conflict, it publishes an A and a PTR record for
     itself, both records will be under	the .local domain, which is the	MDNS
     single domain name. All the other domain names in /etc/myname will	be
     stripped, therefore becomes foo.local, which can be re-
     solved through MDNS. If a conflict	is found, then,	there is another
     foo.local in the network and conflict resolution takes place.

     If	-w was not specified, mdnsd will also publish a	Workstation service,
     this service has no data itself, it's used	to state that the host is up,
     it	can be used for	example, to browse every powered host on the local

     mdnsd supports multiple interfaces, the interfaces	used must be specified
     as	the arguments.	mdnsd must be started as root and upon start up	it
     will drop privileges, change it's euid/egid to _mdnsd and chroot. There-
     fore make sure you	have user and group _mdnsd created.

     MDNS operations can be done with the mdnsctl(8) utility.

     The options are as	follows:

     -d	     Do	not daemonize.	If this	option is specified, debugging will be
	     enabled, mdnsd will run in	the foreground and log to stderr.

     -w	     Do	not publish a workstation service on startup.

     -v	     Print version and exit.

     /var/run/mdnsd.sock    UNIX-domain	socket used for	communication with


     MDNS Draft,
     multicastdns.txt, July 2010.

     DNS-SD Draft,,
     January 2011.

     mdnsd is released under the ISC license.x

     The mdnsd program version 0.1 was released	in 13 February 2011.

     Christiano	Farina Haesbaert <>

     No	proper error return in mdnsl.c.

FreeBSD	13.0			 Feb 06, 2011			  FreeBSD 13.0


Want to link to this manual page? Use this URL:

home | help