Saya telah menemukan jawabannya sambil tetap menulis pertanyaan. Saya telah memutuskan untuk tetap mempostingnya karena orang lain mungkin menemukan wawasan ini, dan kemudian menjawabnya sendiri; Saya harap ini tidak disukai :)
Pengguna Philipp Matthias Hahn di milis linux-kernel telah mengetahuinya setidaknya sebagian:
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.
Dia tidak menutupi accept_ra
tapi setidaknya sudah jelas sekarang bagaimana all
dan default
bekerja, atau lebih tepatnya, bagaimana mereka tidak berfungsi seperti yang saya harapkan.
Pawang untuk accept_ra
di net/ipv6/addrconf.c
adalah proc_dointvec
. Jadi kode antarmuka generik sebelumnya telah menghasilkan larik all
dan entri khusus antarmuka, dan menuliskannya dengan sysctl
atau procfs hanya menempatkan nilai yang Anda tentukan dalam larik.
Kami prihatin dengan bagaimana nilai-nilai itu kemudian digunakan
Anda akan melihat dari penelepon ipv6_accept_ra()
fungsi di include/net/ipv6.h
bahwa setiap penelepon menggunakan antarmuka khusus untuk memanggil fungsi tersebut.
Jadi tidak ada tempat di kernel yang net.ipv6.conf.all.accept_ra
pernah digunakan kecuali untuk menyimpan entri procfs, sejauh yang saya bisa lihat.
Jika Anda ingin mengubah accept_ra
dari setiap antarmuka dengan satu perintah, Anda dapat melakukan ini:
for TUNABLE in $(sysctl -aN --pattern "accept_ra$")
do
sysctl -w "$TUNABLE=0"
done
Saya sekitar 4 tahun terlambat tetapi ini adalah jawaban yang benar :P