I just ran into an odd issue with this. Normally, I disable autoconf by setting autoconf=0
for all pertinent interfaces in sysctl.conf, like so:
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.bond0.autoconf = 0
net.ipv6.conf.bond1.autoconf = 0
Normally, that's enough. However, I just ran into some servers (Rocky 8.6 and 8.7) where this is not working consistently. bond0
would come up with a SLAAC address on boot-up, but it would eventually age out and expire. But on reboot, it would be back. bond1
, oddly enough, would have no such problem. After fighting with it for a while, the thing that seemed to fix it was adding this to sysctl:
net.ipv6.conf.default.accept_ra_pinfo = 0
net.ipv6.conf.all.accept_ra_pinfo = 0
net.ipv6.conf.bond0.accept_ra_pinfo = 0
net.ipv6.conf.bond1.accept_ra_pinfo = 0
This tells it to ignore the prefix info sent in the RADV.
Feels something like a kernel bug to me. Disabling 'autoconf' parameters in sysctl should, in fact, be enough to actually disable autoconf (otherwise, WTF is the purpose of that parameter?). Also disabling "other things" just to make this work as expected just seems wrong. At any rate, this worked for me, and seems like a safer option that disabling accept_ra
entirely.