Discussion:
dhcpcd-7.0.1-1 seems to break SLAAC
(too old to reply)
Jukka Salmi
2018-02-23 00:45:03 UTC
Permalink
Hello

Since upgrading dhcpcd from 6.11.5-1 to 7.0.1-1 my (VLAN) interface
doesn't get an IPv6 address (via SLAAC) anymore. The netctl profile in
question:

Interface=enp0s25.100
Connection=vlan
BindsToInterfaces=enp0s25
VLANID=100
IP=dhcp
IP6=stateless

With dhcpcd-6.11.5-1 starting this netctl profile results in an IPv4
address being configured via DHCP and an IPv6 address being configured
via SLAAC as expected.

With dhcpcd-7.0.1-1 starting this netctl profile results in an IPv4
address being configured via DHCP, but no IPv6 address is configured.

In both cases, netctl passes dhcpcd the same arguments:

dhcpcd -4 -q -t 30 -L enp0s25.100

so that's probably not the source of the problem.

If I disable IPv4 DHCP (by setting `IP=no' in the above netctl profile),
SLAAC works fine again (but of course then I don't get an IPv4 address
via DHCP anymore...).

Is anybody seeing the same issue? Is really dhcpcd to blame?


TIA & cheers,

Jukka
--
This email fills a much-needed gap in the archives.
ProgAndy
2018-02-23 22:09:07 UTC
Permalink
Post by Jukka Salmi
With dhcpcd-6.11.5-1 starting this netctl profile results in an IPv4
address being configured via DHCP and an IPv6 address being configured
via SLAAC as expected.
With dhcpcd-7.0.1-1 starting this netctl profile results in an IPv4
address being configured via DHCP, but no IPv6 address is configured.
...
Is anybody seeing the same issue? Is really dhcpcd to blame?
TIA & cheers,
Jukka
Hello,
that was a deliberate design decision, it is assumed that you will either want dhcpcd to handle ipv4 as well as ipv6 or you want to disable ipv6.

https://roy.marples.name/archives/dhcpcd-discuss/0001903.html
Post by Jukka Salmi
* ipv6: disable kernel RA if interface is active
dhcpcd supports DHCPCv6 as well as SLAAC, but the "private" IPv6 is generated according to RFC 7217 instead of RFC 4941. That means you get a unique ipv6 for each network prefix that never changes.
This article may explain it a bit better
https://www.internetsociety.org/blog/2015/02/ipv6-security-myth-5-privacy-addresses-fix-everything/

More information about the reasons for the change here:
https://roy.marples.name/archives/dhcpcd-discuss/0001907.html
https://roy.marples.name/archives/dhcpcd-discuss/0001880.html

It seems that there were too many complaints, so in git the behaviour has been changed again. (After the 7.0.1 release)
https://roy.marples.name/archives/dhcpcd-discuss/0001942.html
https://github.com/rsmarples/dhcpcd/commit/8f483d192082a953dd035f38ee4555735106f1fc
Post by Jukka Salmi
/*
* If dhcpcd is doing RS, disable RA support
* in the kernel. Otherwise, leave it alone.
* Logically it should be disabled regardless as dhcpcd can
* do it better and the user saying no RS means no RS even the kernel,
* but some crazy people want the kernel to do it still.
*/
Maybe in the future dhcpcd will have options for both ignoring ipv6 (letting the kernel handle it) and disabling ipv6.

--
Andy
Jukka Salmi
2018-02-26 00:02:22 UTC
Permalink
Hello Andy
Post by ProgAndy
Post by Jukka Salmi
With dhcpcd-6.11.5-1 starting this netctl profile results in an IPv4
address being configured via DHCP and an IPv6 address being configured
via SLAAC as expected.
With dhcpcd-7.0.1-1 starting this netctl profile results in an IPv4
address being configured via DHCP, but no IPv6 address is configured.
...
Is anybody seeing the same issue? Is really dhcpcd to blame?
TIA & cheers,
Jukka
Hello,
that was a deliberate design decision, it is assumed that you will
either want dhcpcd to handle ipv4 as well as ipv6 or you want to
disable ipv6.
https://roy.marples.name/archives/dhcpcd-discuss/0001903.html
Post by Jukka Salmi
* ipv6: disable kernel RA if interface is active
[...]
Post by ProgAndy
https://roy.marples.name/archives/dhcpcd-discuss/0001907.html
https://roy.marples.name/archives/dhcpcd-discuss/0001880.html
Thanks for the hints. So it seems that currently a netctl profile with

IP=dhcp
IP6=stateless

is just not working as expected, at least not when using the default
setting of DHCPClient=dhcpcd.
Post by ProgAndy
It seems that there were too many complaints, so in git the behaviour
has been changed again. (After the 7.0.1 release)
https://roy.marples.name/archives/dhcpcd-discuss/0001942.html
https://github.com/rsmarples/dhcpcd/commit/8f483d192082a953dd035f38ee4555735106f1fc
Post by Jukka Salmi
/*
* If dhcpcd is doing RS, disable RA support
* in the kernel. Otherwise, leave it alone.
* Logically it should be disabled regardless as dhcpcd can
* do it better and the user saying no RS means no RS even the kernel,
* but some crazy people want the kernel to do it still.
*/
Maybe in the future dhcpcd will have options for both ignoring ipv6
(letting the kernel handle it) and disabling ipv6.
I wouldn't complain about such options ;)


Cheers, Jukka
--
This email fills a much-needed gap in the archives.
Loading...