8

Where is right place for sysctl redefined values?

I have:

> uname -a
Linux note 3.1.0-1-amd64 #1 SMP Tue Jan 10 05:01:58 UTC 2012 x86_64 GNU/Linux

> cat /etc/debian_version 
wheezy/sid


> tail -n 2 /etc/sysctl.conf   
#
net.ipv6.bindv6only=0

But after each reboot net.ipv6.bindv6only still 1

4 Answers 4

7

Check if there is a file in /etc/sysctl.d with your parameter. These files override the /etc/sysctl.conf file...

7
  • yep. i found /etc/sysctl.d/bindv6only.conf thanks Feb 1, 2012 at 11:18
  • /etc/sysctl.d/README states the precedence order and specifically "use /etc/sysctl.conf directly, which overrides anything in this directory." Is the README wrong?
    – lkanab
    Jan 3, 2017 at 7:59
  • If you have a recent Debian, it load the /etc/sysctl.conf at the last one (see 99-sysctl.conf file). This topic is for old Debian (before 2014). In the new versions, the files must have a number to know the order to use.
    – Dom
    Jan 3, 2017 at 8:35
  • @Dom i am using ubuntu 16.04 LTS . Still it not taking /etc/sysctl.conf neighter 99-sysctl.conf as precedence file. anything still missing?
    – jit
    Dec 27, 2017 at 13:26
  • Check the syntax of the files. They should be used. In 16.04, the files must have a XX- and .conf at the end. Try to restart procps service and look at logs, it can be an error
    – Dom
    Dec 27, 2017 at 22:27
15

https://bugs.launchpad.net/ubuntu/+source/procps/+bug/50093

/etc/init.d/procps.sh comes too early in the boot process to apply a lot of sysctl's. As it runs before networking modules are loaded and filesystems are mounted, there are quite a lot of commonly-used sysctl's which are simply ignored on boot and produce errors to the console.

All documentation on the net referring to changing certain settings in /etc/sysctl.conf such as net.ipv4.netfilter.ip_conntrack_max is wrong for Ubuntu & Debian.

Finally, "It seems to me it is a Debian Squeeze bug, see here for an example and workaround: http://wiki.debian.org/BridgeNetworkConnections

In the latter case, the procps init script should take care of loading them during boot. However, on Squeeze it does not, and you need to restart it from /etc/rc.local (or similar):

# /etc/rc.local

# Load kernel variables from /etc/sysctl.d
/etc/init.d/procps restart

exit 0
6

If you use ufw (uncomplicated firewall) you really need to change the values in /etc/ufw/sysctl.conf as the configuration here overrides /etc/sysctl.conf one.

3
  • Thank you. But no, i did not use ufw. Problem was solved, data was redefined in /etc/sysctl.d Aug 17, 2012 at 3:34
  • 1
    Damn I was pulling my hair on this for hours. I thought it was issue 50093, but this was it. Thank you, thank you, thank you!
    – Sentient
    Oct 9, 2019 at 23:24
  • 8 years later this is still relevant. Confirmed to be the case on Ubuntu server 20.04 running UFW Nov 8, 2020 at 4:24
0

This is set by the procps init script. make sure this init script is enabled with update-rc.d procps enable. If it is enabled you should expect a link from a file in /etc/rcS.d to /etc/init.d/procps. If this init script is working correctly manually running /etc/init.d/procps restart should make the setting.

3
  • You mean Debian doesn't read sysctl.conf by default? wow. Jan 31, 2012 at 18:59
  • it reads sysctl by default. the /etc/init.d/procps mecahnism is the default mechanism. If my answer works, it is because this init script was disabled for some reason, which might be a bug. A bug causing this would not be surprising since he is running either the testing or unstable release of debian (or some combination thereof)
    – stew
    Jan 31, 2012 at 19:06
  • > sysctl net.ipv6.bindv6only net.ipv6.bindv6only = 1 doesnt works Feb 1, 2012 at 11:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.