Em sysctl, as /proc/sys/net/ipv[46]/conf/
teclas têm as seguintes subchaves: all
, default
e uma chave para cada interface de rede. Por exemplo, em uma máquina com uma única interface de rede eth0, ela será assim:
iserv ~ # ll /proc/sys/net/ipv[46]/conf/
/proc/sys/net/ipv4/conf/:
insgesamt 0
dr-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 0
dr-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/
Todas as configurações respectivas existem em cada tecla separadamente. Por exemplo, se eu quiser desativar os Anúncios de roteador IPv6 com o accept_ra
valor, esse valor existe quatro vezes:
iserv ~ # sysctl -a 2>/dev/null | grep "accept_ra "
net.ipv6.conf.all.accept_ra = 1
net.ipv6.conf.default.accept_ra = 1
net.ipv6.conf.lo.accept_ra = 1
net.ipv6.conf.eth0.accept_ra = 1
Minha pergunta agora é: quais desses valores eu preciso alterar? Imaginei all
(alterar todas as interfaces existentes) e default
(alterar todas as novas interfaces que possam aparecer mais tarde), mas alterar essas ainda deixa o valor em 1 para lo e eth0:
iserv ~ # sysctl -w net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.all.accept_ra = 0
iserv ~ # sysctl -w net.ipv6.conf.default.accept_ra=0
net.ipv6.conf.default.accept_ra = 0
iserv ~ # sysctl -a 2>/dev/null | grep "accept_ra "
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.default.accept_ra = 0
net.ipv6.conf.lo.accept_ra = 1
net.ipv6.conf.eth0.accept_ra = 1
A máquina agora aceita anúncios de roteador no eth0 ou não?
Respostas:
Encontrei a resposta enquanto escrevia a pergunta. Decidi publicá-lo de qualquer maneira, porque outros podem achar isso perspicaz e, em seguida, responda eu mesmo; Espero que isso não seja desaprovado :)
O usuário Philipp Matthias Hahn na lista de discussão do linux-kernel descobriu pelo menos parcialmente :
Ele não cobre,
accept_ra
mas pelo menos agora está claro comoall
e comodefault
funciona, ou melhor, como eles não funcionam como eu esperava.fonte
use_tempaddr
parâmetro ...O manipulador para
accept_ra
innet/ipv6/addrconf.c
éproc_dointvec
. Portanto, o código genérico da interface gerou anteriormente uma matriz deall
entradas específicas da interface, e escrever nelas comsysctl
ou procfs apenas coloca o valor que você especificar na matriz.Estamos preocupados com como esses valores são usados
Você verá pelos chamadores da
ipv6_accept_ra()
funçãoinclude/net/ipv6.h
que cada chamador usa uma interface específica para chamar essa função.Portanto, não há nenhum lugar no kernel que
net.ipv6.conf.all.accept_ra
seja usado, exceto para armazenar uma entrada procfs, até onde posso ver.Se você deseja alterar
accept_ra
todas as interfaces com um comando, você pode fazer o seguinte:Estou com cerca de 4 anos de atraso, mas esta é a resposta correta: P
fonte