En sysctl, /proc/sys/net/ipv[46]/conf/
Las claves tienen las siguientes subclaves:all
, default
y una clave para cada interfaz de red. Por ejemplo, en una máquina con una sola interfaz de red eth0, se verá así:
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/
Todos los ajustes respectivos existen en cada tecla por separado. Por ejemplo, si quiero deshabilitar los anuncios de enrutador IPv6 con accept_ra
valor, este valor existe cuatro veces:
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
Mi pregunta ahora es:¿cuál de estos valores necesito cambiar? Pensé all
(para cambiar todas las interfaces existentes) y default
(para cambiar todas las interfaces nuevas que pueden aparecer más adelante), pero cambiarlas aún deja el valor en 1 para lo y 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
¿La máquina aceptará anuncios de enrutador en eth0 o no?
Respuesta aceptada:
Encontré la respuesta mientras seguía escribiendo la pregunta. Decidí publicarlo de todos modos porque otros pueden encontrar esto perspicaz 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.