现象
在执行sysctl -a时,会输出很多sysctl: reading key "net.ipv6.conf
,最后一行才是真正的输出。
原因
sysctl变量stable_secret包含用于生成稳定接口标识符的secret,在内核的ip-sysctl .txt
文档中描述如下:
stable_secret - IPv6 address
This IPv6 address will be used as a secret to generate IPv6
addresses for link-local addresses and autoconfigured
ones. All addresses generated after setting this secret will
be stable privacy ones by default. This can be changed via the
addrgenmode ip-link. conf/default/stable_secret is used as the
secret for the namespace, the interface specific ones can
overwrite that. Writes to conf/all/stable_secret are refused.
It is recommended to generate this secret during installation
of a system and keep it stable after that.
By default the stable secret is unset.
此 IPv6 地址将用作密钥,为链路本地地址和自动配置地址生成 IPv6 地址。默认情况下,设置此密钥后生成的所有地址都将是稳定的隐私地址。这可以通过addrgenmode ip-link进行更改。 conf/default/stable_secret 用作命名空间的密钥,特定于接口的可以覆盖它。 conf/all/stable_secret文件拒绝写入。(机翻)
建议在安装系统期间生成此密钥,之后保持稳定。
默认情况下,稳定密钥处于未设置状态。
查看procfs这个文件
cat /proc/sys/net/ipv6/conf/all/stable_secret
即启用了IPV6导致的。
解决
重定向
使用以下命令禁止显示其他不需要的消息或将其重定向到 /dev/null。
sysctl -a --ignore |& grep vm.dirty_bytes
sysctl -a --ignore 2>&1 | grep vm.dirty_bytes
禁用IPV6
参考文章:https://www.golinuxhub.com/2017/06/how-to-disable-or-enable-ipv6-in-linux/
禁用后查看grub2配置
cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-3.10.0-957.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet ipv6.disable=1
查看grub配置
cat /etc/sysconfig/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet ipv6.disable=1"
GRUB_DISABLE_RECOVERY="true"
这样再执行sysctl的时候就不会有ipv6相关的输出了。