Zeroconf (Zero Configuration) simplifies network configuration. It takes care of IP allocation for network devices so the user doesn't have to set this up manually. Zeroconf can be used even when DHCP isn't working correctly. With manual set up or with DHCP, two network devices can inadvertently be set for the same IP address and cause a conflict. Zeroconf makes sure that a network device is allocated to an IP address that is not occupied by another network connection. In Zeroconf, network administration uses device labels, rather than knowing IP addresses. These device labels are referenced in a Zeroconf implementation directory, and also by the local (in contrast to localhost) web-address.

Zeroconf consists of: MDNS (Multi-DNS) described by RFC 6762, DNS-SD (DNS-Service Discovery) described by RFC 6763, and link-local addressing (RFC3927 for IPv4; RFC 7404 for IPv6).

In Zeroconf, MDNS broadcasts probes to see which IP's are available, and which devices are connected. link-local addressing continues establishing network connections. DNS-SD allows the user to find which devices are available.

Bonjour, Avahi, openmdns and mdnsd are different implementations of Zeroconf. Openmdns, Avahi and mDNSResponder conflict in the ports tree.
  • net/mDNSResponder - FreeBSD's port of MacOS's Bonjour (formerly Rendezvous) protocol. Bonjour is the original Zeroconf implementation, but it is often confused for the encompassing technology of Zeroconf.
  • net/openmdns - OpenBSD lightweight (7k lines of code) and complete Zeroconf implementation.
  • net/avahi-libdns - a library for the Linux (and FreeDesktop) implementation of Zeroconf.
  • dns/mdnsd - BSD developer's implementation of Zeroconf. NetBSD contains an mdnsd, which is of Bonjour. Unsure if these are the same mdnsd.
  • Foxen - based on Howl implementation for Zeroconf. Mozilla related implementation. Foxen and Howl seem to be defunct.
To set up Bonjour's (mDNSResponder) Zeroconf implementation on FreeBSD, see: Thread how-to-install-and-configure-mdnsresponder.70713. dns-sd(1) is a testing tool that comes with mDNSRresponder.

DNS uses port 53, and MDNS uses port 5353. Zeroconf uses IP's on the local network. When there's no DHCP server, Zeroconf is expected to use IP's through

Last edited:
The port net/mDNSResponder also installs a /usr/local/sbin/mdnsd daemon which can be enabled using mdnsd flags in rc.conf. It's meant for client systems as explained here: