In sysctl, the /proc/sys/net/ipv[46]/conf/ keys have the following subkeys: all, default, and a key for each network interface. For example, on a machine with a single network interface eth0, it will look like this:iserv ~ # ll /proc/sys/net/ipv[46]/conf//proc/sys/net/ipv4/conf/:insgesamt 0dr-xr-xr-x 0 root root 0 12. Sep 23:30 all/dr-xr-xr-x 0 root root 0 12. Sep 23:30 default/dr-xr-xr-x 0 root root 0 12. Sep 23:30 eth0/dr-xr-xr-x 0 root root 0 12. Sep 23:30 lo//proc/sys/net/ipv6/conf/:insgesamt 0dr-xr-xr-x 0 root root 0 12. Sep 23:30 all/dr-xr-xr-x 0 root root 0 12. Sep 23:30 default/dr-xr-xr-x 0 root root 0 12. Sep 23:30 eth0/dr-xr-xr-x 0 root root 0 12. Sep 23:30 lo/All the respective settings exist in each key separately. For example, if I want to disable IPv6 Router Advertisements with the accept_ra value, this value exists four times:iserv ~ # sysctl -a 2>/dev/null | grep accept_ra net.ipv6.conf.all.accept_ra = 1net.ipv6.conf.default.accept_ra = 1net.ipv6.conf.lo.accept_ra = 1net.ipv6.conf.eth0.accept_ra = 1My question now is: which of these values do I need to change? I figured all (to change all existing interfaces) and default (to change all new interfaces that may appear later), but changing these still leaves the value at 1 for lo and eth0:iserv ~ # sysctl -w net.ipv6.conf.all.accept_ra=0net.ipv6.conf.all.accept_ra = 0iserv ~ # sysctl -w net.ipv6.conf.default.accept_ra=0net.ipv6.conf.default.accept_ra = 0iserv ~ # sysctl -a 2>/dev/null | grep accept_ra   net.ipv6.conf.all.accept_ra = 0net.ipv6.conf.default.accept_ra = 0net.ipv6.conf.lo.accept_ra = 1net.ipv6.conf.eth0.accept_ra = 1Will the machine now accept Router Advertisements on eth0, or will it not?
sysctl: /proc/sys/net/ipv[46]/conf/: what's the difference between all, default and eth*?
linux;proc;ipv6;sysctl
I've found the answer while still writing the question. I've decided to post it anyway because others may find this insightful, and then answer it myself; I hope this is not frowned upon :)The user Philipp Matthias Hahn on the linux-kernel mailing list has figured it out at least partially:As far as I researched for IPv4 some time ago, the default value getscopied to newly created interfaces only once.all on the other hand allways gets applied in addition to the currentsetting, but it depends on the exact setting, if its ORed, ANDed, orwhatevered:    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.He doesn't cover accept_ra but at least it's clear now how all and default work, or rather, how they do not work as I would have expected.