Encontré la respuesta mientras seguía escribiendo la pregunta. He decidido publicarlo de todos modos porque otros pueden encontrarlo revelador y luego responderlo yo mismo; Espero que esto no esté mal visto :)
El usuario Philipp Matthias Hahn en la lista de correo del kernel de Linux lo ha descubierto al menos parcialmente:
As far as I researched for IPv4 some time ago, the "default" value gets
copied to newly created interfaces only once.
"all" on the other hand allways gets applied in addition to the current
setting, but it depends on the exact setting, if its ORed, ANDed, or
whatevered:
log_martians OR
accept_redirects AND
forwarding ?
mc_forwarding AND
medium_id
proxy_arp OR
shared_media OR
secure_redirects OR
send_redirects OR
bootp_relay AND
accept_source_route AND
rp_filter AND
arp_filter OR
arp_announce MAX
arp_ignore MAX
arp_accept
app_solicit
disable_policy
disable_xfrm
tag
(see include/linux/inetdevice.h:83 for IN_DEV_{AND,OR,MAX}CONF)
Putting a new value in "all" doesn't change the value you read from
"$interface", but it only gets computed and used internally.
No cubre accept_ra
pero al menos ahora está claro cómo all
y default
funcionan, o mejor dicho, cómo no funcionan como hubiera esperado.
El controlador para accept_ra
en net/ipv6/addrconf.c
es proc_dointvec
. Entonces, el código de interfaz genérico ha generado previamente una matriz de all
y entradas específicas de la interfaz, y escribiendo en ellas con sysctl
o procfs simplemente pone el valor que especificas en la matriz.
Nos preocupa cómo se usan esos valores
Verás de las personas que llaman de ipv6_accept_ra()
función en include/net/ipv6.h
que cada persona que llama utiliza una interfaz específica para llamar a esa función.
Entonces no hay ninguna parte en el núcleo que net.ipv6.conf.all.accept_ra
nunca se usa, excepto para almacenar una entrada procfs, por lo que puedo ver.
Si desea cambiar accept_ra
de cada interfaz con un comando, puede hacer esto:
for TUNABLE in $(sysctl -aN --pattern "accept_ra$")
do
sysctl -w "$TUNABLE=0"
done
Tengo unos 4 años de retraso pero esta es la respuesta correcta :P