As reported in T3134, per-interface DHCPv6 DUIDs are not supported by WIDE dhcp6c. Fork the client and implement support for them.
Description
Details
- Version
- -
- Is it a breaking change?
- Perfectly compatible
Related Objects
- Mentioned In
- 1.4.2
rVYOSONEXe2599181251a: dhcpv6: T3240: send DUID when only DHCPv6 PD is configured
rVYOSONEXedf1a261e154: dhcpv6: T3240: support per-interface client DUIDs
rVYOSONEXe41857b6e179: dhcpv6: T3240: send DUID when only DHCPv6 PD is configured
rVYOSONEXe44167387cf3: Merge pull request #704 from bstepler/T3240
rVYOSONEXb23323922939: dhcpv6: T3240: support per-interface client DUIDs
rVYOSONEX5fc79c9f5f22: Merge pull request #693 from bstepler/T3240
T3134: DHCPv6 DUID configuration node missing - Mentioned Here
- T3134: DHCPv6 DUID configuration node missing
Event Timeline
Hi @stepler,
WOW! Any chance getting this upstreamed? That would be the overall best solution - I still like it and think we should add it, but fetching the source from upstream reduces our maintenance load.
After solving this requirement of vyos and confirming its normal operation, it is recommended to provide a feedback repair patch and submit a pr
Added CI Job: https://ci.vyos.net/job/vyos-build-wide-dhcpv6/
Added Patches: https://github.com/vyos/vyos-build/blob/current/packages/wide-dhcpv6/patches/0023-dhcpc6-support-per-interface-client-DUIDs.patch
Will be part of the next 1.4 ISO and could be if tested good backported into 1.3
Looks good on 1.4-rolling-202101270854:
vyos@vyos:~$ configure [edit] vyos@vyos# set interfaces ethernet eth0 address dhcpv6 [edit] vyos@vyos# set interfaces ethernet eth0 dhcpv6-options duid 00:02:00:00:0d:e9:30:30:31:45:34:36:2d:58:58:58:58:58:58:58:58:58:58:58:58:58:58 [edit] vyos@vyos# commit [edit] vyos@vyos# exit Warning: configuration changes have not been saved. exit vyos@vyos:~$ show version Version: VyOS 1.4-rolling-202101270854 Release Train: sagitta Built by: autobuild@vyos.net Built on: Wed 27 Jan 2021 08:54 UTC Build UUID: df336741-0ecd-4ec5-b765-aa5c1b35831c Build Commit ID: 37b270bab20d9f Architecture: x86_64 Boot via: installed image System type: KVM guest Hardware vendor: QEMU Hardware model: Standard PC (Q35 + ICH9, 2009) Hardware S/N: Hardware UUID: df70cccc-4524-4d73-a493-ac63fcc933b8 Copyright: VyOS maintainers and contributors
Output of tshark -pi virbr0 -f "port dhcpv6-server" -VO dhcpv6 -c 1:
Capturing on 'virbr0'
Frame 1: 127 bytes on wire (1016 bits), 127 bytes captured (1016 bits) on interface virbr0, id 0
Ethernet II, Src: RealtekU_d8:9b:b6 (52:54:00:d8:9b:b6), Dst: IPv6mcast_01:00:02 (33:33:00:01:00:02)
Internet Protocol Version 6, Src: fe80::5054:ff:fed8:9bb6, Dst: ff02::1:2
User Datagram Protocol, Src Port: 546, Dst Port: 547
DHCPv6
Message type: Solicit (1)
Transaction ID: 0x6cd4f5
Client Identifier
Option: Client Identifier (1)
Length: 27
Value: 000200000de93030314534362d5858585858585858585858…
DUID: 000200000de93030314534362d5858585858585858585858…
DUID Type: assigned by vendor based on Enterprise number (2)
Enterprise ID: Broadband Forum (previously 'DSL Forum') (3561)
Identifier: 3030314534362d5858585858585858585858585858
Identity Association for Non-temporary Address
Option: Identity Association for Non-temporary Address (3)
Length: 12
Value: 000000000000000000000000
IAID: 00000000
T1: 0
T2: 0
Elapsed time
Option: Elapsed time (8)
Length: 2
Value: 0000
Elapsed time: 0ms
Option Request
Option: Option Request (6)
Length: 4
Value: 00170018
Requested Option code: DNS recursive name server (23)
Requested Option code: Domain Search List (24)
1 packet capturedFound a minor bug: if DHCPv6 PD is configured without requesting an IPv6 address, the configured DUID is not sent.
Looks good on 1.4-rolling-202101280218:
vyos@vyos:~$ configure [edit] vyos@vyos# set interfaces dummy dum0 [edit] vyos@vyos# set interfaces ethernet eth0 dhcpv6-options pd 0 interface dum0 [edit] vyos@vyos# set interfaces ethernet eth0 dhcpv6-options duid 00:02:00:00:0d:e9:30:30:31:45:34:36:2d:58:58:58:58:58:58:58:58:58:58:58:58:58:58 [edit] vyos@vyos# commit [edit] vyos@vyos# exit Warning: configuration changes have not been saved. exit vyos@vyos:~$ show version Version: VyOS 1.4-rolling-202101280218 Release Train: sagitta Built by: autobuild@vyos.net Built on: Thu 28 Jan 2021 02:18 UTC Build UUID: 959140d2-44da-4efc-be7f-f50c7d2f63e5 Build Commit ID: 37b270bab20d9f Architecture: x86_64 Boot via: installed image System type: KVM guest Hardware vendor: QEMU Hardware model: Standard PC (Q35 + ICH9, 2009) Hardware S/N: Hardware UUID: d7e85bbb-ff78-4726-ab5b-831200623857 Copyright: VyOS maintainers and contributors
Output of tshark -pi virbr0 -f "port dhcpv6-server" -VO dhcpv6 -c 1:
Capturing on 'virbr0'
Frame 1: 148 bytes on wire (1184 bits), 148 bytes captured (1184 bits) on interface virbr0, id 0
Ethernet II, Src: RealtekU_d6:87:ac (52:54:00:d6:87:ac), Dst: IPv6mcast_01:00:02 (33:33:00:01:00:02)
Internet Protocol Version 6, Src: fe80::5054:ff:fed6:87ac, Dst: ff02::1:2
User Datagram Protocol, Src Port: 546, Dst Port: 547
DHCPv6
Message type: Solicit (1)
Transaction ID: 0xda3d58
Client Identifier
Option: Client Identifier (1)
Length: 27
Value: 000200000de93030314534362d5858585858585858585858…
DUID: 000200000de93030314534362d5858585858585858585858…
DUID Type: assigned by vendor based on Enterprise number (2)
Enterprise ID: Broadband Forum (previously 'DSL Forum') (3561)
Identifier: 3030314534362d5858585858585858585858585858
Elapsed time
Option: Elapsed time (8)
Length: 2
Value: 0000
Elapsed time: 0ms
Identity Association for Prefix Delegation
Option: Identity Association for Prefix Delegation (25)
Length: 41
Value: 000000000000000000000000001a0019ffffffffffffffff…
IAID: 00000000
T1: 0
T2: 0
IA Prefix
Option: IA Prefix (26)
Length: 25
Value: ffffffffffffffff40000000000000000000000000000000…
Preferred lifetime: infinity
Valid lifetime: infinity
Prefix length: 64
Prefix address: ::
1 packet capturedLooks good on 1.3-beta-202102010443:
vyos@vyos:~$ configure [edit] vyos@vyos# set interfaces dummy dum0 [edit] vyos@vyos# set interfaces ethernet eth0 dhcpv6-options pd 0 interface dum0 [edit] vyos@vyos# set interfaces ethernet eth0 dhcpv6-options duid 00:02:00:00:0d:e9:30:30:31:45:34:36:2d:58:58:58:58:58:58:58:58:58:58:58:58:58:58 [edit] vyos@vyos# commit [edit] vyos@vyos# exit Warning: configuration changes have not been saved. exit vyos@vyos:~$ show version Version: VyOS 1.3-beta-202102010443 Release Train: equuleus Built by: autobuild@vyos.net Built on: Mon 01 Feb 2021 04:43 UTC Build UUID: f0edd61b-8868-4537-913a-a4bce3f3ec11 Build Commit ID: 070e2e77e93f34 Architecture: x86_64 Boot via: installed image System type: KVM guest Hardware vendor: QEMU Hardware model: Standard PC (Q35 + ICH9, 2009) Hardware S/N: Hardware UUID: 965e3c00-1113-4e3d-828a-c2f1394e5c99 Copyright: VyOS maintainers and contributors
Output of tshark -pi virbr0 -f "port dhcpv6-server" -VO dhcpv6 -c 1:
Capturing on 'virbr0'
Frame 1: 148 bytes on wire (1184 bits), 148 bytes captured (1184 bits) on interface virbr0, id 0
Ethernet II, Src: RealtekU_5b:ad:86 (52:54:00:5b:ad:86), Dst: IPv6mcast_01:00:02 (33:33:00:01:00:02)
Internet Protocol Version 6, Src: fe80::5054:ff:fe5b:ad86, Dst: ff02::1:2
User Datagram Protocol, Src Port: 546, Dst Port: 547
DHCPv6
Message type: Solicit (1)
Transaction ID: 0xc4f14a
Client Identifier
Option: Client Identifier (1)
Length: 27
Value: 000200000de93030314534362d5858585858585858585858…
DUID: 000200000de93030314534362d5858585858585858585858…
DUID Type: assigned by vendor based on Enterprise number (2)
Enterprise ID: Broadband Forum (previously 'DSL Forum') (3561)
Identifier: 3030314534362d5858585858585858585858585858
Elapsed time
Option: Elapsed time (8)
Length: 2
Value: 0000
Elapsed time: 0ms
Identity Association for Prefix Delegation
Option: Identity Association for Prefix Delegation (25)
Length: 41
Value: 000000000000000000000000001a0019ffffffffffffffff…
IAID: 00000000
T1: 0
T2: 0
IA Prefix
Option: IA Prefix (26)
Length: 25
Value: ffffffffffffffff40000000000000000000000000000000…
Preferred lifetime: infinity
Valid lifetime: infinity
Prefix length: 64
Prefix address: ::
1 packet capturedNot working for me as expected in 1.3.0-rc4
In my current working configuration, the duid is in the /var/lib/dhcpv6/dhcp6c_duid file (29 bytes).
With:
set interfaces ethernet eth3 vif 0 dhcpv6-options duid 00:02:00:00:0d:e9:30:30:31:45:34:36:2d:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
the send client-id gets properly configured in file /run/dhcp6c/dhcp6c.eth3.0.conf
However, the content of /var/lib/dhcpv6/dhcp6c_duid gets replaced so the file size is 16 bytes and dhcp6c stops getting any PDs.
Verified working in GNS3 on 1.3.0-rc4. Note that /var/lib/dhcpv6/dhcp6c_duid is not used if send client-id is configured.