https://access.redhat.com/mt/zh-hans/solutions/8709#rhel89disable

RHEL9

  • 方式一:禁用 IPv6 内置内核模块
grubby --update-kernel=ALL --args='ipv6.disable=1'
reboot

注意:目前RHEL9.1存在bug,使用内核引导参数禁用ipv6后,在使用ping命令是会有一个 “ping: socket: Address family not supported by protocol” 的错误信息

https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=2152511

  • 方式二:通过 sysctl 设置禁用 IPv6
vim /etc/sysctl.d/ipv6.conf
# 首先,对所有接口禁用
net.ipv6.conf.all.disable_ipv6 = 1
# 如果使用sysctl方法,也必须在所有特定的接口上禁用该协议。
net.ipv6.conf.<interface>.disable_ipv6 = 1

# 默认情况下,不会在localhost上禁用IPv6,因为它对多个组件很重要。如果你想禁用它,请将下面的值改为1。
net.ipv6.conf.lo.disable_ipv6 = 0

加载新配置

sysctl -p /etc/sysctl.d/ipv6.conf

备份initramfs文件,并生成新的

cp -p /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)_$(date +%Y-%m-%d_%H%M%S).img

# 以下命令重建 initramfs:
dracut -f -v

验证文件包含

lsinitrd /boot/initramfs-$(uname -r).img  | grep 'etc/sysctl.d/ipv6.conf'

注释掉在 /etc/hosts 中找到的任何 IPv6 地址,包括 ::1 本地主机地址(如果您在步骤 #1 中也在本地主机上禁用了 IPv6)

cp -p /etc/hosts /etc/hosts.disableipv6
sed -i 's/^[[:space:]]*::/#::/' /etc/hosts