** Description changed: [Impact] isc-dhcp-client in precise does not do stateless DHCPv6 correctly if it's enabled as "dhcp 1" within "iface <IFACE> inet6 auto" within /etc/network/interfaces. The dhclient-script responsible for updating /etc/resolv.conf exists if it doesn't find an IPv6 address in its environment, which is only true for stateful DHCPv6. [Test Case] * You should have IPv6 on your network segment, make a note of the subnet. * Have a stateless DHCPv6 server listen on the network segment: ** Minimal dhcpd6.conf: authoritative; option dhcp6.name-servers 2001:4860:4860::8888, 2001:4860:4860::8844; option dhcp6.domain-search "ubuntu.com"; - subnet6 fd7a:4ac2:1751:0::/64 {}; + pid-file-name "/tmp/dhcpd.test.pid"; + subnet6 fd7a:4ac2:1751:0::/64 {} ** Adjust the subnet information to the one you're actually using or the DHCP server will refuse to start. ** Install isc-dhcp-server on a host on the same network segment. + ** Disable apparmor (it will yield losts of EPERM for the test file locations). ** Start up the server there using: /usr/sbin/dhcpd -cf dhcpd.conf -6 -lf /tmp/leases.test * Have network configuration be managed by ifupdown, not network-manager: * Add the following configuration to /etc/network/interfaces: iface eth0 inet6 auto - dhcp 1 - * ifdown eth0 - * ifup eth0 + dhcp 1 + * ifdown eth0 && ifup eth0 (alternatively: dhclient -6 -S -v IFACE) * Check if /etc/resolv.conf contains: - search ubuntu.com + search ubuntu.com. nameserver 2001:4860:4860::8888 nameserver 2001:4860:4860::8844 [Regression Potential] The suggested change is already present since quantal. The change itself is self-contained [Additional Info] /sbin/dhclient-script in precise's isc-dhcp-client 4.1.ESV-R4-0ubuntu5.8 contains the following snippet: BOUND6|RENEW6|REBIND6) if [ -z "${new_ip6_address}" ] || [ -z "${new_ip6_prefixlen}" ]; then exit_with_hooks 2 fi # set leased IP ip -6 addr add ${new_ip6_address}/${new_ip6_prefixlen} \ dev ${interface} scope global This assumes that the result of the DHCPv6 transaction is an address with a prefix, which is the case for stateful DHCPv6. For stateless DHCPv6, however, we only get additional information that's not directly address-related. This is fixed since quantal and reads like this: BOUND6|RENEW6|REBIND6) if [ "${new_ip6_address}" ] && [ "${new_ip6_prefixlen}" ]; then # set leased IP ip -6 addr add ${new_ip6_address}/${new_ip6_prefixlen} \ dev ${interface} scope global fi It looks like the only change from the diff to the current saucy version we need for it to work correctly.
** Description changed: [Impact] isc-dhcp-client in precise does not do stateless DHCPv6 correctly if it's enabled as "dhcp 1" within "iface <IFACE> inet6 auto" within /etc/network/interfaces. The dhclient-script responsible for updating /etc/resolv.conf exists if it doesn't find an IPv6 address in its environment, which is only true for stateful DHCPv6. [Test Case] * You should have IPv6 on your network segment, make a note of the subnet. * Have a stateless DHCPv6 server listen on the network segment: ** Minimal dhcpd6.conf: authoritative; option dhcp6.name-servers 2001:4860:4860::8888, 2001:4860:4860::8844; option dhcp6.domain-search "ubuntu.com"; pid-file-name "/tmp/dhcpd.test.pid"; subnet6 fd7a:4ac2:1751:0::/64 {} ** Adjust the subnet information to the one you're actually using or the DHCP server will refuse to start. ** Install isc-dhcp-server on a host on the same network segment. ** Disable apparmor (it will yield losts of EPERM for the test file locations). ** Start up the server there using: /usr/sbin/dhcpd -cf dhcpd.conf -6 -lf /tmp/leases.test * Have network configuration be managed by ifupdown, not network-manager: * Add the following configuration to /etc/network/interfaces: iface eth0 inet6 auto dhcp 1 * ifdown eth0 && ifup eth0 (alternatively: dhclient -6 -S -v IFACE) * Check if /etc/resolv.conf contains: search ubuntu.com. nameserver 2001:4860:4860::8888 nameserver 2001:4860:4860::8844 + * If the old version of the package is installed, /etc/resolv.conf content will not change. [Regression Potential] The suggested change is already present since quantal. The change itself is self-contained [Additional Info] /sbin/dhclient-script in precise's isc-dhcp-client 4.1.ESV-R4-0ubuntu5.8 contains the following snippet: BOUND6|RENEW6|REBIND6) if [ -z "${new_ip6_address}" ] || [ -z "${new_ip6_prefixlen}" ]; then exit_with_hooks 2 fi # set leased IP ip -6 addr add ${new_ip6_address}/${new_ip6_prefixlen} \ dev ${interface} scope global This assumes that the result of the DHCPv6 transaction is an address with a prefix, which is the case for stateful DHCPv6. For stateless DHCPv6, however, we only get additional information that's not directly address-related. This is fixed since quantal and reads like this: BOUND6|RENEW6|REBIND6) if [ "${new_ip6_address}" ] && [ "${new_ip6_prefixlen}" ]; then # set leased IP ip -6 addr add ${new_ip6_address}/${new_ip6_prefixlen} \ dev ${interface} scope global fi It looks like the only change from the diff to the current saucy version we need for it to work correctly. -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1214385 Title: Stateless DHCPv6 not working in precise To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/isc-dhcp/+bug/1214385/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs