MDNSD(8)
β¨ mdnsd β the little multicast DNS daemon that could π
okay bestie, sit down, hydrate, because we're talking about mdnsd β a small multicast DNS daemon, and she's honestly doing the most for a program that fits in your pocket. π«Ά
πΈ SYNOPSIS
mdnsd [-hnsv] [-g GROUP] [-H NAME] [-i IFACE] [-l LEVEL] [-p FILE]
[-t TTL] [-u USER] [PATH]
that's it. that's the whole vibe check. π
π« DESCRIPTION
so mdnsd is a small mDNS-SD daemon for UNIX like systems, and no cap she has history β she's based on an original implementation made by Jeremie Miller back in 2003. vintage. iconic. still serving. π
multicast DNS is an open standard, defined in RFC6762, and the service discovery part (-SD) lives in RFC6763. you probably know it by its government name, Bonjour or Avahi, depending on which operating system you're on. iykyk. π¦
she reads the service definitions of the services she's gonna announce from:
/etc/mdns.d/*.service
...but you can hand her a different path on the command line, and that path can be either a directory or a single service file. flexible fr fr. β¨
by default mdnsd runs on all multicast capable interfaces on the system, over both IPv4 and IPv6. wanna keep her on just one? that's what -i IFACE is for. π
here's the thing though, and this part is important so i'm putting it in a box:
mdnsd advertises and answers for the local host and its services β she does not make the system resolver mDNS-aware.
so if you want to actually resolve .local names on the host, you need to install libnss-mdns and add it to nsswitch.conf(5). do it. it's giving "necessary step", not "optional step". π
π₯ OPTIONS
this program follows the usual UNIX command line syntax. the options are as follows, bestie, and i'm listing every single one because we don't skip:
-g GROUPβ the group to drop privileges to after start. π see-ufor the details, they're linked.-H NAMEβ the hostname to advertise. default is just the system hostname, which is honestly fine but you can flex. π-hβ print a help message and dip. so simple, so underrated.-i IFACEβ the interface to announce services on. by default mdnsd runs on all interfaces, so this is your "no, just this one" button. π―- only available on Linux. sorry to the BSD girlies, that's just how it is. π«Ά
-l LEVELβ set the log level. your choices are:none,err,notice(this is the default),info,debug. π-nβ run in the foreground, do not detach from the controlling terminal. for when you wanna watch her work. π-p FILEβ path to the pid file. default:/run/mdnsd.pid. when you're dropping privileges, point this at a directory the target user can actually write to, so the file can be updated onSIGHUPand removed at exit. trust. π-sβ use syslog even if you're running in the foreground. she logs either way, she just changes venues. π-t TTLβ set the TTL of the mDNS packets. default:1, which is link-local only. π-u USERβ the user to drop privileges to after start. must be started as root.- okay so here's the tea: mdnsd needs no special privileges to answer over mDNS, so you can absolutely start her directly as a non-root user. the only privileged operation is the
-i IFACEfilter, which usesSO_BINDTODEVICEand therefore needs theCAP_NET_RAWcapability. grant it out-of-band, e.g. withAmbientCapabilities=CAP_NET_RAWin the systemd unit. β‘ - without it the daemon still runs β she just listens on all interfaces and logs a warning. she's not mad, she's just disappointed. π
- okay so here's the tea: mdnsd needs no special privileges to answer over mDNS, so you can absolutely start her directly as a non-root user. the only privileged operation is the
-vβ show the program version, along with the project homepage and the address for bug reports. know who you're talking to. πβ¨
π FILES
/etc/mdns.d/*.serviceβ mDNS-SD services to announce. this is where the good stuff lives. π/run/mdnsd.pidβ process ID of the running daemon, see-p. (hi-p, we see you.) π¦
π SEE ALSO
mquery(1), mdnsd.service(5), mdns-scan(1), nsswitch.conf(5)
go read them. expanding your mind is free and it's a slay. π
π«Ά AUTHORS
this mDNS-SD implementation was created in 2003 by Jeremie Miller <jer@jabber.org>. π
much later, in 2016, it was adopted by Joachim Wiberg <troglobit@gmail.com> for further development and maintenance at GitHub: β¨https://github.com/troglobit/mdnsdβ©. β¨
give them their flowers. they earned them. π
okay that's the whole page, bestie β this was the Debian build of MDNSD(8) from the System Manager's Manual, dated Jul 24 2026. you're now officially mDNS-pilled. go announce some services. π
β¨π¦
π¦ where this page comes from
- ubuntu stonking: mdnsd 1.2-1 Β· BSD-3-Clause
- Copyright (c) 2021-2026 Joachim Wiberg <troglobit@gmail.com>
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms