
Estoy intentando desactivar la configuración automática de IPv6 para todas mis interfaces (tengo 4). Quiero usar
net.ipv6.conf.all.autoconf = 0
En la configuración de my sysctl (en /etc/sysct.d
), pero la configuración no se aplica a ninguna interfaz, sin embargo, para el net.ipv6.conf.all.autoconf
parámetro funciona, por lo que ejecuta el siguiente comando: `
sysctl -a | grep "net\.ipv6\.conf" | grep "autoconf"
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.eth0.autoconf = 1
net.ipv6.conf.eth1.autoconf = 1
net.ipv6.conf.eth2.autoconf = 1
net.ipv6.conf.eth3.autoconf = 1
Luego probé con la configuración sobre la marcha con
sysctl -w net.ipv6.conf.all.autoconf=0
Pero tampoco está funcionando. ¿Conoce alguna solución para esto? Las razones por las que no quería hacerlo una por una ( net.ipv6.conf.eth3.autoconf = 0
manualmente), porque a veces también tengo más interfaces (simplemente no siempre están conectadas)
Respuesta1
TL;DR
for sInterface in /proc/sys/net/ipv6/conf/*; do sysctl --write $(echo $sInterface.autoconf=0 | sed "s#/#.#g" | sed "s/.proc.sys.//g"); done
Deberías hacerlo.
La versión larga:
sysctl
en realidad cambia el contenido del archivo en/proc/sys
net.ipv6.conf.all.autoconf
por lo tanto está ubicado físicamente en/proc/sys/net/ipv6/conf/all/autoconf
- así que iteramos sobre
/proc/sys/net/ipv6/conf/
- cambiamos todo
/
a.
usarsed
usando el#
separador - Eliminamos
.proc.sys.
de la cadena nuevamente usandosed
el separador estándar/
. - agregamos
.autoconf=0
a la interfaz - y aplicar con
sysctl --write $()
Nota:Si no estás corriendo como root
deberías hacer en sudo sysctl --write $()
su lugar...