ZeroConfNetworking
Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.
Launchpad entry: https://features.launchpad.net/distros/ubuntu/+spec/zero-configuration-networking
Packages affected: basefiles, dhclient, zeroconf, libnss-mdns, network-manager, avahi-autoipd, avahi-daemon, ifupdown, gnome-system-tools
Summary
When a dynamic network configuration is desired and a local DHCP server is not available for a network, Ubuntu needs to correctly assign itself a link-local address. This is implemented by avahi-autoipd, but requires some additional configuration and packaging corrections to have the system behave in a fully correct way.
Rationale
Other operating system correctly use link-local addresses for communicating on adhoc networks or local LANs without a DHCP server. Ubuntu users will be much happier and more productive when they are effortlessly able to communicate with other device with link-local addresses.
Use cases
- Claudia and Mary set up an adhoc wireless network between between their laptops. They want to be able to communicate without needing to do anything special with interface address assignments.
- John's home server was booted and it got a link-local address. He adds a DHCP server to his network, and boots his laptop, which receives a regular DHCP-assigned address. He wants his server and laptop to be able to communicate without fiddling with their interfaces.
Ellen uses a name server that makes a .local top-level-domain available. She upgrades her computer from Edgy to Feisty, where link-local addresses are assigned by default. She needs notification that the unicast .local TLD and the link-local .local domain conflict with each other, and offer her instructions on how to disable link-local networking.
Scope
Up to version 6.10, Ubuntu does not create or use link-local addresses by default. Changes to implement this spec will be limited to making this functionality available without impacting the existing dynamic and static network assignments methods. The work will mostly surround avahi-autoipd and libnss-mdns, with supporting changes in related packages. Changes to, or enhancements of, DNS service-discovery are out of scope for this spec.
Design
- After coming up, interfaces must be able to correctly route traffic to the local network for the link-local IANA network (169.254.0.0/16).
- Dynamic interfaces that do not get a DHCP address must assign themselves a link-local address.
The .local TLD must be resolvable via the link-local mDNS.
- Users new to link-locale addressing need to be educated about the changes.
Implementation
base-files:
add "link-local 169.254.0.0" to /etc/networks so that route will be less confusing to users
dhclient -- add hook for DNS changes to check for unicast "local" TLD
When a unicast local TLD is available, notify the user about the problem, and offer to fix it [pitti: in this case it should not grab an LL address at all?]
{{{if ! host -t soa local. >/dev/null 2>&1; then NOTIFY; fi
}}}
zeroconf -- incompatible with avahi
- remove package from archive
libnss-mdns -- to resolve link-local local TLD
- start with Debian version 0.8-5 (with Sjoerd's fixes), -6 has many fixes reverted
- audit and promote to main
read [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=393711 debian #393711]
audit for error conditions around automatic update of the nsswitch.conf 'hosts' line
build package with --disable-legacy (drops potentially dangerous ministack fall-back)
network-manager
patch with proper avahi link-local hooks, especially for adhoc modes [pitti: what does that do exactly? is this patch available already? from where? upstream blessing?]
avahi-autoipd -- the actual core of ipv4ll assignment
- audit and promote to main
require both ll routes, as described in "Routes" at http://avahi.org/wiki/AvahiAutoipd
[pitti: which one needs to be added? where?]
avahi-daemon
enable by default [pitti: does this require any changes in network-admin?]
- in /etc/network/interfaces add some comments on how to set up manual ll addresses correctly.
[pitti: this needs to happen in installer, please verify with Colin]
ifupdown, gnome-system-tools
patch to include "ipv4ll" method (as opposed to "dhcp", "static", etc) for sane configuration in /etc/network/interfaces [pitti: -v, please]
Clarification of terminology
Zeroconf is a collection of protocols including ipv4 link local networking, mDNS, and DNS service-discovery. Apple's implementation of zeroconf was originally named "Rendezvous" and was later renamed to "Bonjour". Avahi is a free software implementation of zeroconf. See http://avahi.org/wiki/AboutAvahi.
- IPv4 link-local addresses are in the 165.254.0.0/16 space.
- mDNS is DNS over multicast on the local network.
- DNS-sd allows for service discovery using mDNS (which is out of scope for this spec).
Comments
To potentially assist in auditing Avahi, there are some items already available for review at http://avahi.org/wiki/SecurityConsiderations