Linux-Networking

我可以更改 grub 中的預設 sysctl 值嗎?

  • November 14, 2021

使用早於 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?

sysctl.*= [KNL]

      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_netOP在之前的 Q/A 中找到的,從核心 5.8 開始,但不是在之前,因此也不是在 5.1 之前,通過 GRUB 添加這兩個核心參數:

sysctl.net.core.devconf_inherit_init_net=1 sysctl.net.ipv6.conf.all.forwarding=1

將達到預期的目標。

引用自:https://serverfault.com/questions/1082967