Package: ifupdown
Version: 0.8.34
dhclient supports DHCPv4 and DHCPv6.
In DHCPv4, usually the host's EUI-64 (MAC address) is used to identify
it.
Because this causes some problems [1], DHCPv6 introduced the `DHCP
Unique Identifier` (DUID) [2], instead of relying on the EUI-64.
If we want to operate a dual-stack network with DHCPv6 managed IP
addresses, we now face a new problem altogether:
- V4 hosts are identified by EUI-64
- V6 hosts are identified by DUID
- How to correlate them?
"Easy! Use the EUI-64 anyway" one might think. But when the DHCP server
is not connected directly to the same link as the host and receives the
request through a relay agent, then he will have no information of the
hosts EUI-64 and it becomes almost impossible to correlate the requests,
because in DHCPv6, the relay agent does not preserve the EUI-64 in it's
RELAY-FORWARD message [3] (in contrast to the DHCPv4 relay agent).
Fortunately, there is RFC 4361. It suggests that clients, which operate
in a dual-stack environment, must send DUID (and IAID for that matter)
to the server when requesting an IP via DHCPv4 [4] [5].
(There is also another RFC tackling this problem by suggesting that the
DHCPv6 relay agent may optionally preserve the EUI-64 as an option [6]
in the RELAY-FORWARD message.)
Since dhclient-4.3.1-6+deb8u3 [7], dhclient knows the `-i` option. If
the option is set, dhcpclient sends the DUID/IAID in requests to DHCPv4
servers according to RFC 4361.
But ifupdown currently does not invoke dhclient with the `-i` option by
default. Which presents the before-mentioned challenge for DHCP servers.
Therefore I suggest the following changes to `inet.defn`:
- In every "up" section, where `dhclient -4 -v ...` is invoked, invoke
it with `dhclient -4 -v -i ...` instead.
- In every "down" section, where `dhclient -4 -v ...` is invoked, invoke
it with `dhclient -4 -v -i ...` instead.
~Chris
PS: These changes should also be ported to ifupdown2.
---
[1] https://tools.ietf.org/html/rfc4361#section-4
[2] https://tools.ietf.org/html/rfc3315#section-9
[3] https://tools.ietf.org/html/rfc3315#section-7
[4] https://tools.ietf.org/html/rfc4361#section-5
[5] https://tools.ietf.org/html/rfc4361#section-6.1
[6] https://tools.ietf.org/html/rfc6939
[7] https://sources.debian.org/src/isc-dhcp/4.3.1-6+deb8u3/