При использовании ядер старше 5.1, если пользователь создает сетевое пространство имен, оно начинается со значений sysctl по умолчанию. Даже если корневые пространства имен изменили эти значения с помощью sysctl, новые сетевые пространства имен по-прежнему будут использовать значения по умолчанию. Например, proc/sys/net/ipv6/conf/all/forwarding
всегда равно 0, поскольку это значение по умолчанию.
Если я правильно понимаю, это значения по умолчанию, установленные ядром, и мне было интересно, можно ли изменить их через GRUB_CMDLINE_LINUX или любым другим способом. Обратите внимание, что я не хочу получать доступ к сетевому пространству имен и изменять параметр через sysctl (или echo /proc/sys/net.... ), я хотел бы изменить значение по умолчанию
Функция, которую вы ищете, доступна только начиная с ядра 5.8, как описано в этом UL SE Q/A:Как установить sysctl с помощью параметра командной строки ядра?:
Set a sysctl parameter, right before loading the init process, as if the value was written to the respective /proc/sys/... file. Both '.' and '/' are recognized as separators. Unrecognized parameters and invalid values are reported in the kernel log. Sysctls registered later by a loaded module cannot be set this way. Example: sysctl.vm.swappiness=40
Таким образом, в сочетании с devconf_inherit_init_net
, найденным OP в предыдущем Q/A , начиная с ядра 5.8 , но не ранее и, следовательно, не ранее 5.1, добавляя через GRUB эти два параметра ядра:
sysctl.net.core.devconf_inherit_init_net=1 sysctl.net.ipv6.conf.all.forwarding=1
позволят достичь намеченной цели.