So I suspect the reason for this behavior is that there is no reason why
you'd want to run dhclient in IPv6 mode before you've brought up the
interface and parsed the router advertisement.

That's because unlike IPv4, IPv6 configuration is mostly done through
router advertisements which happen entirely outside of DHCPv6. The
content of that router advertisement then dictates whether DHCPv6 should
be done and if so, in which mode.

So the way things are expected to happen is:
 - Bring up the interface
 - Do router solicitation and get a router advertisement
 - Parse the router advertisement, looking for the other-config (O) and managed 
(M) flag.
 - If the managed bit is set, then trigger dhcpv6 in stateful mode
 - If the managed bit isn't set and other-config bit is set, then trigger 
dhcpv6 in stateless mode
 - If neither are, then use the RDNSS and DNSSL information from the 
advertisement to configure DNS

Triggering dhclient in stateless or even stateful mode before getting a
router advertisement may succeed but may also run into a race condition
as the gateway and prefix length may not have been received by the time
the DHCP dialog is over, leading to invalid configuration.

** Changed in: isc-dhcp (Ubuntu)
       Status: New => Invalid

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to isc-dhcp in Ubuntu.
https://bugs.launchpad.net/bugs/1633562

Title:
  'dhclient -6 -S' does not bring interface up

Status in isc-dhcp package in Ubuntu:
  Invalid

Bug description:
  When poking around with bug 1633479 i realized that 'dhclient -6 -S -1
  eth0' will not raise the interface eth0.  if it is not up already and
  have link local addresses, then it will fail.

  This may well be designed, so I'm fine if this bug is closed as 'INVALID' 
with such an explanation.
  One thing I did notice though, when seeing if this was easily fixed was
   a.) previously bringing the link up was not done (no scripts are called)
   b.) the PREINIT script in dhclient.linux does:
       # flush any stale global permanent IPs from interface
       ip -6 addr flush dev ${interface} scope global permanent

  That means that currently, a non-stateless dhclient
  invocation would flush global permanent addresses, but a stateless
  dhclient invocation would not.

  If we changed dhclient to call dhclient-script with PREINIT6, then this 
scenario:
    ip link set down dev eth0
    ip link set up dev eth0
    ip address add fd42::2/64 dev eth0
    dhclient -S -6 -v -1 eth0

  will cause the fd42::2 address to be removed from eth0, where
  as previously it was not.  I'm not sure if the previous behavior
  was designed or chance.

  ProblemType: Bug
  DistroRelease: Ubuntu 16.10
  Package: isc-dhcp-client 4.3.3-5ubuntu15
  ProcVersionSignature: Ubuntu 4.8.0-22.24-generic 4.8.0
  Uname: Linux 4.8.0-22-generic x86_64
  NonfreeKernelModules: zfs zunicode zcommon znvpair zavl
  ApportVersion: 2.20.3-0ubuntu8
  Architecture: amd64
  CurrentDesktop: Unity
  Date: Fri Oct 14 13:08:13 2016
  EcryptfsInUse: Yes
  InstallationDate: Installed on 2015-07-23 (449 days ago)
  InstallationMedia: Ubuntu 15.10 "Wily Werewolf" - Alpha amd64 (20150722.1)
  SourcePackage: isc-dhcp
  UpgradeStatus: No upgrade log present (probably fresh install)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/isc-dhcp/+bug/1633562/+subscriptions

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to