Linux-Networking
我可以更改 grub 中的預設 sysctl 值嗎?
使用早於 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
將達到預期的目標。