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/

Reply via email to