I have observed this as a more general problem with any sysctl setting for "all" interfaces.
For example, try:
sysctl -a | grep '^net\.ipv4\.conf.*send_redirects'
sysctl -w net.ipv4.conf.all.send_redirects=0
sysctl -a | grep '^net\.ipv4\.conf.*send_redirects'
sysctl -w net.ipv4.conf.all.send_redirects=1
sysctl -a | grep '^net\.ipv4\.conf.*send_redirects'
It seems that setting conf.all does not have any effect on the individual conf.<interface> settings. This begs the question of what setting conf.all is supposed to do.
There is also conf.default which appears to be the value inherited when a new interface is created. To test:
I have observed this as a more general problem with any sysctl setting for "all" interfaces.
For example, try:
sysctl -a | grep '^net\. ipv4\.conf. *send_redirects ' conf.all. send_redirects= 0 ipv4\.conf. *send_redirects ' conf.all. send_redirects= 1 ipv4\.conf. *send_redirects '
sysctl -w net.ipv4.
sysctl -a | grep '^net\.
sysctl -w net.ipv4.
sysctl -a | grep '^net\.
It seems that setting conf.all does not have any effect on the individual conf.<interface> settings. This begs the question of what setting conf.all is supposed to do.
There is also conf.default which appears to be the value inherited when a new interface is created. To test:
sysctl -w net.ipv4. conf.all. send_redirects= 1 conf.default. send_redirects= 0 conf.br100. send_redirects # it's 0
sysctl -w net.ipv4.
brctl addbr br100
sysctl net.ipv4.
sysctl -w net.ipv4. conf.all. send_redirects= 1 conf.br100. send_redirects # it's still 0
sysctl net.ipv4.
sysctl -w net.ipv4. conf.all. send_redirects= 0 conf.default. send_redirects= 1 conf.br101. send_redirects # it's 1 conf.br100. send_redirects # it's still 0
sysctl -w net.ipv4.
brctl addbr br101
sysctl net.ipv4.
sysctl net.ipv4.
This is sensible. Hence I can see how "default" is useful, but not "all".
Above tests done with Ubuntu 12.04.4 running kernel 3.8.0-36-generic